汇编语言程序设计资料简汇
通用寄存器
8 位通用寄存器 8 个:AL、AH、BL、BH、CL、CH、DL、DH。
16 位通用寄存器 8 个:AX、BX、CX、DX、SI、DI、BP、SP。
AL 与 AH 、BL 与 BH、CL 与 CH、DL 与 DH 分别对应于 AX 、BX、CX 和 DX 的低 8 位与
高 8 位。
专用寄存器
指令指针: IP(16 位)。
标志寄存器: 没有助记符(FLAGS 16 位)。
段寄存器
段寄存器:CS、DS、ES、SS。
内存分段:80x86 采用分段内存管理机制,主要包括下列几种类型的段:
代码段:用来存放程序的指令序列。
数据段:用来存放程序的数据。
堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。
物理地址与逻辑地址
物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。
逻辑地址:或称分段地址。
段地址与偏移地址都是 16 位。
系统采用下列方法将逻辑地址自动转换为 20 位的物理地址:
物理地址 = 段地址 × 16 + 偏移地址
每个内存单元具有唯一的物理地址,但可由不同的逻辑地址描述。
与数据有关的寻址方式
立即寻址方式
立即寻址方式所提供的操作数紧跟在操作码的后面,与操作码一起放在指令代码段中。立
即数可以是 8 位数或 16 位数。如果是 16 位数,则低位字节存放在低地址中,高位字节存放在
高地址中。
例:MOV AL,18
指令执行后,(AL)= 12H
寄存器寻址方式
在寄存器寻址方式中,操作数包含于 CPU 的内部寄存器之中。这种寻址方式大都用于寄存
器之间的数据传输。
例 3:MOV AX,BX
如指令执行前(AX)= 6789H,( BX)= 0000H;则指令执行后,(AX)= 0000H,
(BX)保持不变。
直接寻址方式
直接寻址方式是操作数地址的 16 位偏移量直接包含在指令中,和指令操作码一起放在代码
段,而操作数则在数据段中。操作数的地址是数据段寄存器 DS 中的内容左移 4 位后,加上指
令给定的 16 位地址偏移量。直接寻址方式适合于处理单个数据变量。
寄存器间接寻址方式
在寄存器间接寻址方式中,操作数在存储器中。操作数的有效地址由变址寄存器 SI、DI 或
基址寄存器 BX、BP 提供。
如果指令中指定的寄存器是 BX、SI、DI,则用 DS 寄存器的内容作为段地址。
如指令中用 BP 寄存器,则操作数的段地址在 SS 中,即堆栈段。