
3.2 寻址方式

视频二维码(扫码观看)
寻址方式

操作数可能的来源或存放处:
由指令直接给出
寄存器
内存单元
寻找操作数所在地址的方法可以有三种大类型:
指令直接给出的方式
存放于寄存器中的寻址方式
存放于存储器中的寻址方式
一、立即寻址
指令中的源操作数是立即数,即源操作数是参加操作的数据本身。
例:MOV AX,1234H

二、直接寻址
指令中直接给出操作数的偏移地址
例:MOV AX,[1200H]

直接寻址:直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。
例:MOV AX,ES:[1200H]
三、寄存器寻址
参加操作的操作数在CPU的通用寄存器中。
例:MOV AX,BX

四、寄存器间接寻址
参与操作的操作数存放在内存中,其偏移地址为指令中的寄存器的内容。
例:
MOV AX,[BX]
设(BX)=1200H

寄存器间接寻址:由寄存器间接给出操作数的偏移地址。
存放偏移地址的寄存器称为间址寄存器,它们是:BX,BP,SI,DI。
操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:
BX,SI,DI→默认在数据段
BP→默认在堆栈段
寄存器间接寻址

五、寄存器相对寻址
操作数的偏移地址为寄存器的内容加上一个位移量
例:
MOV AX,[BX+DATA]
设DS=2000H,BX=0220H,DATA=05H
则:AX=[20225H]
六、基址、变址寻址
操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,操作数的段地址由选择的基址寄存器决定
例:MOV AX,[SI+BX]
七、基址、变址、相对寻址
操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,再加上一个位移量操作数的段地址由选择的基址寄存器决定
例:MOV AX,[BP+SI+DATA]
八、隐含寻址
指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中
例:
MUL BL
指令的执行:AL×BL→AX