微型计算机原理及应用-第五章 86系列微型计算机的指令系统
【例】程序执行后, (AX)=?, (BX)=?
MOV AX, 1234H
MOV BX, 5678H
ADD AX, BX
该程序中MOV指令为数据传送指令操作符, ADD指令为加法指令
操作符, 三条指令皆为双操作数指令。第一、二条指令AX、BX皆
为目的操作数地址, 为寄存器寻址方式。第三条指令中, AX为目的操作数地址, BX为源操作数地址。源地址和目的地址皆为寄存器寻址方式。
【例】1)MOV AX, [1024H]
MOV BX, ES[1000H]
设DS=2000H, ES=3000H,
(21024H)=1784H, (31000H)=1234H。
指令执行后AX=?, BX=?
DS×16+1024H=21024H
AX=1784H;S=3000H则BX=1234H
(1)以BX寄存器进行间接寻址—数据段基址寻址
如MOV AX, [BX]
(2)以BP寄存器进行间接寻址—堆栈段基址寻址
如MOV BX, [BP]
(3)以SI和DI寄存器进行间接寻址—变址寻址
其中SI为源寄存器、DI为目的寄存器
(4)将BX、BP和SI、DI寄存器组合起来进行间接寻址—基址加变址寻址
如MOV AX, [BX+SI]
MOV AX, [BX+SI+0050];相对基址加变址寻址
【例】设BX=0158H, DI=10A5H, 位移量=1B57H, DS=2100H, 并假定没有使用段前缀, 即把DS作为操作数对应的段寄存器。
在各种寻址方式下, 这些寄存器和位移量所产生的有效地址和物理地址为:
直接寻址:
有效地址=1B57H;物理地址=21000H+1B57H=22B57H
MOV AX, [1B57H]
寄存器间接寻址(寄存器为BX):
有效地址=0158H MOV AX, [BX];物理地址=21000H+0158H=21158H BX
寄存器相对间接寻址:MOV AX, [BX+1B57H]
有效地址=0158H+1B57H=1CAFH;物理地址=21000H+1CAFH=22CAFH
变址寻址(寄存器为DI):MOV AX, [DI]
有效地址=10A5H;物理地址=21000H+10A5H=220A5H
DI寄存器相对变址寻址:MOV AX, [DI+1B57H]
有效地址=10A5H+1B57H=2BFCH;物理地址=21000H+2BFCH=23BFCH
基址加变址的寻址(BX为基址寄存器, DI为变址寄存器):MOV AX, [BX+DI]
有效地址=0158H+10A5H=11FDH;物理地址=21000H+11FDH=221FDH
⑦相对的基址加变址的寻址(BX为基址寄存器, DI为变址寄存器):
MOV AX, [BX+DI+1B57H]