微处理器 - 8086 寻址模式


在指令中表示源操作数的不同方式称为寻址模式。8086 编程中有 8 种不同的寻址模式 -

立即寻址方式

数据操作数是指令本身的一部分的寻址模式称为立即寻址模式。

例子

MOV CX, 4929 H, ADD AX, 2387 H,  MOV AL, FFH 

寄存器寻址方式

这意味着寄存器是指令操作数的来源。

例子

MOV CX, AX   ; copies the contents of the 16-bit AX register into  
             ; the 16-bit CX register),  
ADD BX, AX 

直接寻址方式

将内存位置的有效地址直接写入指令中的寻址模式。

例子

MOV AX, [1592H], MOV AL, [0300H]

寄存器间接寻址方式

这种寻址模式允许通过以下任意寄存器中保存的偏移地址在任何内存位置对数据进行寻址:BP、BX、DI 和 SI。

例子

MOV AX, [BX]  ; Suppose the register BX contains 4895H, then the contents  
              ; 4895H are moved to AX 
ADD CX, {BX} 

基于寻址方式

在此寻址模式下,操作数的偏移地址由 BX/BP 寄存器的内容与 8 位/16 位位移之和给出。

例子

MOV DX, [BX+04], ADD CL, [BX+08]

变址寻址方式

在此寻址模式下,操作数偏移地址是通过将 SI 或 DI 寄存器的内容与 8 位/16 位位移量相加得出的。

例子

MOV BX, [SI+16], ADD AL, [DI+16] 

基于索引的寻址模式

在此寻址模式下,操作数的偏移地址是通过将基址寄存器与索引寄存器的内容相加来计算的。

例子

ADD CX, [AX+SI], MOV AX, [AX+DI] 

基于位移模式索引

在此寻址模式下,操作数偏移量是通过添加基址寄存器内容来计算的。索引寄存器内容和 8 或 16 位位移。

例子

MOV AX, [BX+DI+08], ADD CX, [BX+SI+16]