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]