汇编语言有3类指令组成 : (1)汇编指令: 机器码的助记符,有对应的机器码。这是汇编语言的核心部分。 (2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行。 (3)其他符号:如+,-,*,/等,由编译器识别,没有对应的机器码。
存储器: 存储器被划分成若干个存储单元,每个存储单元由0开始编号,这些编号可以看成每个存储单元的地址。 例如一个存储器一共128个存储单元,编号从0 ~ 127。 计算机最小的单位是比特bit,也就是一个二进制位的大小。 8个bit 组成一个字节Byte,微型机存储器的存储单元可以存储一个Byte,即8个2进制位。 如果一个存储器有128个存储单元,它可以存储128个字节Byte(128*8 bit)。
主板和接口卡: 主板上一般有CPU,存储器,外围芯片组,扩展插槽(其上面插有RAM和接口卡) 一个计算机上所有外部设备必须受到CPU控制,而CPU对外部设备不能直接控制,像显示器,音响等,直接控制这些设备的是插在扩展插槽上的接口卡,扩展插槽总线和CPU总线相连,接口卡也通过扩展插槽和CPU相连,CPU通过直接控制这么接口卡,来间接控制外部设备,简单说就是CPU发出命令给接口卡,接口卡按照CPU命令控制外部设备。 像是显示器有对应的显卡,显卡上的ROM存储着显卡的BIOS,显卡上RAM称为显存,CPU发出要显示的数据写入显存,屏幕上就会显示相应内容,现在要求视觉效果高,对显存大小要求就大,能够及时处理CPU穿过来的命令和数据。
外部设备物理上是独立的,但都是和CPU总线相连,CPU对他们读或者写的时候都通过控制总线发出内存读写命令。这也就是说,CPU在控制他们的时候,都把他们当作内存来对待,把他们总的看作是由若干存储单元组成的逻辑存储器,这个存储器就是内存地址空间。汇编中面对的就是这个内存地址空间。如图:
所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中有一个地址段,即一段地址空间CPU在这段地址空间读写数据,实际就是在操作相应的外部器件。
例如:地址8000H-9FFFH的8K空间为显存地址的空间,CPU向此段内存空间写入数据,这些数据就被写入显卡显存中,然后被显卡输出到显示器上。 CPU要想进行数据的读写,必须和外部器件(芯片)进行3类信息交互: 1,存储单元的地址 2,器件的选择,读或写命令(控制信息) 3,读或写数据(数据信息) 相应的,CPU与其交互就需要连接,他们之间采用导线连接,通过传输电信号实现,连接的导线被称为总线。因CPU要想进行数据的读写,必须和外部器件进行3类信息交互,所以规定了三种总线,地址总线,控制总线,数据总线。
内存地址空间:一个CPU的地址宽度为10,那么可以寻址1024个内存单元,这1024个可寻找到的内存单元就构成了这个CPU的内存空间地址。 最终运行程序的是CPU,用汇编写程序时候,必须从CPU的角度考虑问题,对CPU来说,系统中所有存储器中的存储单元都处于一个统一的逻辑存储器中,他的容量受CPU寻址能力的限制。这个逻辑存储器就是我们所说的内存地址空间。
寄存器 CPU中运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接连接各种器件,在他们之间进行数据传送。 对于汇编语言来说,操作的主要是CPU的寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。
8086CPU的所有寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
以AX为例,寄存器的逻辑结构:
数据存储:
8086CPU的上一代CPU中寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX,BX,CX,DX这4个寄存器都可分为两个可独立使用的8位寄存器来用: AX可分为AH和AL BX可分为BH和BL CX可分为CH和CL DX可分为DH和DL AX的低8位变成了AL寄存器,高8位构成了AH寄存器。AH和AL寄存器是可以独立使用的8位寄存器。数据存储如图:
处于对兼容性的考虑,8086CPU可以一次性处理一下两种尺寸的数据。 1,字节: byte 一个字节由8位bit,可以存放在8位寄存器中。 2,字:word 一个字有两个byte组成,这两个byte分别为这个字的高位字节和低位字节。 计算机中是以二进制形式存放的 0100111000100000B(B表示二进制数) 人们习惯了十进制20000 十六进制一位相当于二进制的四位更容易查看4E20H(H表示16进制) 例如AX中存放4E20 ,则AH中存放4E,AL中存放20。所以多用16进制表示一个数据。
|