(汇编语言)寻址方式

  •  直接寻址

指令中直接写出存储单元的变量名,或者地址

在直接寻址方式中,有效地址EA直接写在指令中,用中括号里的数值作为EA

MOV AX,[2000H]  EA=2000H

  • 立即数寻址

立即数寻址方式中指令的操作数是8位(00H-0FFH)或16位(0000H-0FFFFH)立即数,并直接出现在指令中。

立即数寻址只能用于源操作数,不能用于目的操作数。

MOV AX,1010  DX=1010H

MOV AX,0102 DX=0102H

  • 寄存器寻址

操作数存放在CPU的内部寄存器reg中

8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL

16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP

4个段寄存器seg: CS、DS、SS、ES

BX=2000H mov dx,BX 

DX=2000H

  • 寄存器间接寻址

间接寻址就是把存储单元的偏移地址事先装入某个寄存器,再通过这个寄存器间接地找到这个存储单元。

操作数的形式:[Reg],Reg只能使用基址寄存器BX、BP或变址寄存器SI、DI。

有效地址EA=BX/BP/SI/DI。

默认的段地址在DS(若寄存器为BX、SI、DI)中或SS(若寄存器为BP)中,但可使用段超越前缀改变。

BX=2000H mov dx,[BX]

EA=2000H

  • 寄存器相对寻址

操作数的形式:[Reg+Disp]

Reg只能使用基址寄存器BX、BP或变址寄存器SI、DI

Disp是8位或16位位移量。

BX=2000H mov dx,[BX+1234H]

EA=2000H+1234H=3234H 

  • 基址变址寻址

操作数的形式:[Base+Index]

Base只能是基址寄存器BX或BP

Index只能是变址寄存器SI或DI。

BX=2000H DI=40H mov dx,[BX+DI]

EA=2000H+40H=2040H

  • 相对基址变址寻址

操作数的形式:[Base+Index+Disp]

Base只能是基址寄存器BX或BP

Index只能是变址寄存器SI或DI

Disp是8位或16位位移量。

BX=2000H DI=40H mov dx,[BX+DI+1234H]

EA=2000H+40H+1234H=3274H

  • 例题: 

说明下列指令中源操作数的寻址方式?

如果BX=1000H,BP=0500H,SI=0100H,CX=2000H,给出DX的值或有效地址EA的值。

(1) mov dx,[1340]

(2) mov dx,1340

(3) mov dx,cx

(4) mov dx,[bp]

(5) mov dx,[bx+1234]

(6) mov dx,[bx+si]

(1)mov dx,[1340]

直接寻址 EA=1340H

(2)mov dx,1340

立即数寻址 DX=1340H

(3)mov dx,cx

寄存器寻址 DX=2000H

(4)mov dx,[bp]

寄存器间接寻址 EA=0500H

(5)mov dx,[bx+1234]

寄存器相对寻址 EA=1000H+1234H=2234H

(6)mov dx,[bx+si]

相对基址变址寻址 EA=1000H+0100H=1100H

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值