立即寻址
指令直接给出的方式
mov AX,1200H
AX是累加器
寄存器寻址器
参加操作的操作数在CPU的通用寄存器中。
例如:
MOV AX,BX
就是BX寄存器中的内容送给AX
存储器操作数的寻址方式
重点
指令操作的对象在内存中,表现形式为:
【】
指令中给出运算对象在内存某个逻辑段中偏移地址
【偏移地址】
逻辑段的段基地址通过默认或重设的方式给出。
存储器操作数的字长本身不确定,其字常取决于指令中的另一个寄存器操作数,或通过其他方式指定字长
直接寻址
指令中直接给出操作数的偏移地址
例如
MOV AX,【1200H】
直接寻址方式下,操作数默认为在数据段中,但允许段重设,即由指令给出所在逻辑段。
例
MOV AX,ES:【1200H】
ES:就是段重设
寄存器间接寻址
操作数存放在内存中,数据在内存中的偏移地址为方括号中通用寄存器的内容
仅有4个通用寄存器可用于存放数据的偏移地址
间接寻址的一般格式:
【间地寄存器】
一般由 BX,BP,SI,DI
例
MOV BX,1200H
MOV AX,[BX]
寄存器相对寻址
操作数的偏移地址为寄存器的内容加上一个位移量
如
MOV AX,[BX + DATA]
例
MOV AX, 2000H
MOV DS, AX
MOV BX, 1200H
MOV AL, [BX + 5]
相对寻址主要用于一位数组的操作
常将位移量作为 表头 地址,间址寄存器的值作为表内相对地址
基址,变址寻址
操作数的偏移地址为
一个基址寄存器的内容+一个变址寄存器的内容;
操作数的段地址由选择的基址寄存器决定
基址寄存器为BX, 默认在数据段
基址寄存器位BP,默认在堆栈段
例
MOV SI,1100H
MOV BX,SI
MOV AX,[SI+BX]
相对寻址
操作数的偏移地址为:
基址寄存器内容+变址寄存器+偏移量
例如
MOV DI,1000H
MOV BP,DI
MOV AL,【BP】【DI】5