MOV指令以及操作数的寻址方式
-
偏移地址在指令中,操作数在内存中
MOV指令默认的操作数存储在DS中(数据段寄存器);此时采用段加偏移。 -
偏移地址在寄存器中,操作数在内存中
能够存储偏移地址的寄存器:BX、BP、SI、DI(此时用作数据寄存器)
在段寄存器没有指定的情况下,BP对应SS;BX、SI、DI对应DS。
比如: MOV AX, [BP] #源操作数的物理地址:SS*16 + BP
-
第二种情形的延申
比如: MOV AX, [BP+15H] #源操作数的物理地址:SS*16 + BP + 15H
-
基址加变址寻址方式
用一个基址寄存器(BX和BP)和一个变址寄存器(DI和SI)值,相加结果作为操作的偏移地址(SI源变址寄存器,DI目的变址寄存器);
BP对应SS(因为BP本身就用于堆栈操作,所以对应SS堆栈段寄存器);
BX对应DS(同样BX本身就是数据寄存器,所以对应DS数据段寄存器);
比如:
MOV AX, [BX+SI] #源操作数的物理地址:DS*16 + BX + SI
MOV AX, [BP+DI] #源操作数的物理地址:SS*16 + BP + DI
-
第四种情形的升级
基址加变址加相对寻址
比如:
MOV AX, [BX+SI+10H] #源操作数的物理地址:DS*16 +