8086 寻址方式

立即数寻址

mov ax, 0x0001
mov bx, 1

CS寄存器在立即数寻址过程中无法作为目的操作数使用

寄存器寻址

mov ax, bx
mov bx, ax

存储器寻址

8086CPU具有20根地址线,内存地址的确定是通过段地址+偏移地址实现的

直接寻址

当前数据段的段地址存放于DS寄存器中。寻址时一般只提供偏移地址即可。

mov ax, [0x0001]
mov bx, [0x3]

mov [0x0001], ax

若不使用DS寄存器中的数据作为段地址,也可以使用ES寄存器作为数据段的段地址。

mov ax, es:[0x1]
mov ax, [es:0x1]

mov [es:0x01], ax

寄存器间接寻址

间接寻址的寄存器只有:BX, SI, DI, BP,其中BX, SI, DI默认的段地址为DS指向的数据段,BP默认的段地址为SS指向的堆栈段。

mov ax, [bx] ; mov ax, [ds:bx]
mov [si], ax

mov ax, [bp] ; mov ax, [ss:bp]
mov [bp], ax

寄存器相对寻址

其形式为:MOV DST [REG + DISP]

mov ax, [bx + 0x20]

mov [bp+0x2], cx

基址变址寻址

MOV AX, [BX+DI] ; MOV AX, DS:[BX+DI]

MOV AX, [BP+DI] ; MOV AX, SS:[BP+DI]

相对基址变址寻址方式

MOV AX, [BX+DI+0x02] ; MOV AX, DS:[BX+DI+0x02]

MOV AX, [BP+DI+0x02] ; MOV AX, SS:[BP+DI+0x02]