基址寻址 #
基址寻址指的是在指令的地址部分使用基址寄存器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的值作为偏移地址。