寻址方式

七中寻址方式:

1. 立即寻址方式

立即数包含在指令中,作为指令的一部分。

2. 寄存器寻址方式

操作数在CPU内部的寄存器中,指令指定寄存器号

3.直接寻址方式

操作数在寄存器中,指令直接包含操作数的有效地址(偏移地址)。

操作数一般存放在数据段(DS)。

可采用段超越前缀,操作数也可含在其他段中。 

4.寄存器间接寻址方式

操作数在存储器中,操作数有效地址在SI,DI,BX,BP之一,则一般情况下,

如果有效地址在SI,DI,BX中,则段值默认为DS

如果有效地址在BP中,则默认的段值为SS

5.寄存器相对寻址方式

操作数在存储器中,操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)内容加上指令中给定的位移量。

默认段值同上。

6.基址加变址寻址方式

操作数有有效地址由基址寄存器(BX,BP)之一的内容与变址寄存器(DI,SI)之一的内容相加。

默认段值同上。

这种寻址方式适用于数组或表格地处理

7.相对基址加变址寻址方式

操作数有效地址 EA =(BX或BP)+(SI或DI)+偏移理

一道例题

(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H

指出各条指令完成后AX寄存器中的内容

(1)MOV AX,1200H

立即寻址方式 (AX)=1200H

(2)MOV AX,BX

两者都是寄存器,寄存器寻址,把BX的内容送入AX,(AX)=0100H

(3)MOV AX,[1200H]

直接寻址,先求物理地址,默认段值为DS,则物理地址为 20000H+1200H = 21200H

则(AX)=4C2AH(不是2A!) AX是一个字(16位!),采用高高低低的原则,得到字的内容

(4)MOV AX,[BX]

寄存器间接寻址,物理地址 = 20000H+0100H = 20100H

则(AX)=3412H

(5)MOV AX,1100H[BX]

寄存器相对寻址,物理地址 = 20000H + 0100H + 1100H = 21200H

则(AX)=4C2AH

(6)MOV AX,[BX][SI]

基址加变址寻址,有效地址=0100H + 0002H = 0102H

物理地址 = 20000H+0102H = 20102H

(AX)=7856H

(7)MOV AX,1100H[BX][SI]

相对基址加变址寻址,物理地址=20000H+0100H+0002H+1100H = 21202H

则(AX)=65B7H

总结

除立即寻址和寄存器寻址外,无论是哪种寻址方式,关键在于如何求出物理地址,基址或者段值+变址或者偏移量

对于立即寻址和寄存器寻址,相当于直接给出了操作数。


立即寻址就是指令当中自带数据,直接读取,最快;

直接寻址就是指令中存放的是地址,直接解析这个地址;

间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值