自己给自己选了一本教材,粗略看下前面的第一章和以前学的单片机差不多,笔记如下:
1值得注意并且熟练应用的是2 8 10 16 进制的相互转换。
2.明确运算符,与(AND)或(OR)非(NOT)和异或(XOR)操作运算。
3. 计算机中所用的字符包括:
字母:A、B、...Z,a、b、...z;
数字:0、1、...9;
专用符号:+、-、*、/、= ...
控制符号:CR(Carriage Return 回车)、LF(Line Feed 换行)...
每个字符对应一个ASCII(美国信息交换代码American Standard Code for Information Interchange)码。
4.数据的存储
计算机之所以被广泛的应用,其主要原因就在于它能够"记忆"。即将数据储存在它的"存储器"中。那么数据究竟是以何种形式存于存储器中的呢?前面已经讨论过,一位二进制数只能表达0和1两种状态,用于表示数字也只能表达0和1两个数字。而我们平时应用的数的范围是很大的。因此,若数据在存储器中是按"位" 存放,即CPU每次仅能从存储器中取得1bit数据进行处理,那么这样的计算机效率是极低的。所以,"位"(bit)并不是存储器中所使用的最小存储单元。
实际上,数据是按照每八个"位"为一组的形式存于存储器中,也就是说,CPU每次从存储器中取出或放入数据的最小宽度是八个bit。我们把这八个bit单独取了个名字--"字节"(BYTE)。所以说,存储器的最小单元就是"字节"。
有时我们嫌"字节"这个单位太小,因此在实际应用中还常用"千字节"(KB),"兆字节"(MB)和"千兆字节"(GB)。1KB=1024B,1MB=1024KB,1GB=1024MB。(① 这里所说的"千"、"兆"指得是"210"、"220",不是一般意义上的"103"、"106" )
不同的CPU所能配备的存储器的容量是不同的,例如8086/88最多可配备1MB存储器,而80286最多可配备16MB存储器,为什么有这样的差别呢?下图表示了CPU同存储器之间的联接形式:
可以看到,存储器中的每个字节都有一个编号,这个编号在技术上称为存储单元的"地址"(Address)。这就象是生活中的门牌号码一样。假如要把一封信邮寄到收信人手中,势必要写出收信人的地址。同样,CPU要想把数据发到存储器的某个单元中,也要给出这个存储单元的"地址"。因此,在CPU和存储器之间就有一组专门传送"地址"的线路,这组线路称为"地址总线"。
地址总线不是一根,而是一组。每根地址线都有0或1两种状态,这一系列的0和1组成一个二进制数,当CPU把这个二进制数传到存储器后,哪个存储单元的编号恰好和这个数相等,则这个存储单元就被CPU"选中",那么CPU就可以把这个存储单元所存的数据通过另一组线路(数据总线)取出,或向这个存储单元存入新的数据。 不同的CPU所具有的地址线数量是不一样的,像8086/88只有20根地址线,所能给出的地址范围是0-220-1(1048575),所以 8086/88只能配备1MB存储器。而286有24根地址线,当然可配备224个字节的存储器。386/486有32根地址线,所以最多可配备4GB存储器。
前面所说的存储器都是直接和CPU相联接的,这些存储器和CPU往往安装在同一块电路板上,因此通常把这类存储器称为"内存储器"(内存)。在机器中还有另一类存储器-"外存储器",这类存储器一般指得是软盘、硬盘、磁带和光盘等容量较大的存储设备。
外存储器和内存相联接而不和CPU直接联接,即CPU无法直接将外存中的数据取到自己内部进行处理,而只能先通过另一部分控制电路将外存中的数据取到内存中,再进行进一步的处理。处理后的数据也是先放在内存中,再传至外存。
正是由于这个原因,外存的容量并不受CPU地址线数量的限制。其容量可从几百KB直至几个GB不等。而且外存往往是机械--电子结合的设备,其数据存取速度远低于内存。
5. 寄存器
寄存器又分为内部寄存器与外部寄存器,所谓内部寄存器,其实也是一些小的存储单元,也能存储数据。但同存储器相比,寄存器又有自己独有的特点:
① 寄存器位于CPU内部,数量很少,仅十四个;
② 寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据;
③ 每个内部寄存器都有一个名字,而没有类似存储器的地址编号。
寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。关于各个寄存器的具体问题后面会深入讨论。
外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过"端口"交换数据,所以外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为"端口",这种说法不太严格,但经常这样说。
外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。
CPU对端口的访问也是依据端口的"编号"(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口地址,端口地址范围为0--3FFH。下图反映了CPU、内存、端口和外设间的联系关系。
本章结束语
我们说汇编语言是面向硬件的语言,其实汇编语言所真正面对的就是存储器、寄存器和端口。而它所完成的工作无非是在内存中保存数据,在寄存器中"加工"数据,通过端口传输数据或控制设备。这一特点随着后文对汇编语言更深入地探讨就会逐渐显露出来。
汇编语言中的每一条指令都会控制电脑完成一个细微的动作,这些细微的动作组合在一起就会产生一种宏观的效果。CPU的一举一动都在程序的精确控制之下完成。这样的能力可不是高级语言所能拥有的。这也正是汇编语言能够吸引人的地方。
轻微瞟过去发现和51的没太多区别,继续看书中=。=
转载请注明:鸟儿博客 » 第1章 汇编语言基础知识