基址寻址与变址寻址

基址寻址与变址寻址

基址寻址 #

基址寻址指的是在指令的地址部分使用基址寄存器BX或BP来提供偏移地址。比如:

mov [bx], dx
inc word [bx]

处理器会访问由段寄存器DS指向的数据段,BX的值作为偏移地址。

函数调用时为了访问栈底的参数,可以使用BP。比如:

mov ax, 0x5000
push ax
mov bp, sp
mov ax, 0x7000
push ax
mov dx, [bp] ;用bp取出了栈底的数据

此时,处理器会访问由段寄存器SS指向的数据段,BP的值作为偏移地址。

变址寻址 #

变址寻址与基址寻址很相似,唯一的区别在于变址寻址使用变址寄存器(或称索引寄存器)SI和DI。例如:

mov [si], dx
add ax, [di]

处理器会访问由段寄存器DS指向的数据段,SI或DI的值作为偏移地址。

From #