相对基址加变址寻址方式

相对基址加变址寻址方式,第1张

相对基址加变址寻址方式,第2张

该数在存储器中运算,其有效地址是基址寄存器(BX,BP)的值、变址寄存器(SI,DI)的值和指令中的8位/16位偏移量之和。

在不使用段覆盖前缀的情况下,规定如果有效地址包含BP,其默认段寄存器为SS;否则,它的默认段寄存器是DS。

指令中给出的8位/16位偏移用补码表示。计算有效地址时,如果偏移量为8位,则符号扩展到16位。当得到的有效地址超过0FFFFH时,取其模数64K。

例3.5假设指令:MOV AX,[BX+SI+200H],执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,存储单元12310H的内容为1234H。指令执行后AX的值是多少?

解:根据相对基址加索引寻址方式规则,执行本例指令时,源操作数的有效地址EA为:

EA=(BX)+(国际单位制)+200小时= 2100小时+0010小时+200小时= 2310小时

该操作数的物理地址应由DS和EA的值构成,即:

PA =(DS)* 16+EA = 1000h * 16+2310h = 12310h

所以这条指令的执行效果就是把物理地址12310H的一个字的值传到AX。

从相对基址加索引的寻址方式来看,由于它的可变因素很多,所以看起来比较复杂,但由于它的可变因素很多,所以灵活性很高。例如:

D1[i]用于访问一维数组D1的第I个元素,其寻址有一个自由度。D2[i][j]用于访问二维数组D2的第I行第j列的元素,其寻址有两个自由度。可变数量增加了其寻址模式的灵活性。

相对于基址加索引地址有很多等价的写法。以下书写格式都是正确的,称呼意义也是一样的。
MOV AX,[BX+SI+1000H] MOV AX,1000H[BX+SI]
MOV AX,1000H[BX][SI] MOV AX,1000H[SI][BX]

但是写格式BX [1000+SI]和SI[1000H+BX]是错误的,即使用的寄存器不能在“[”、“]”之外,这个限制在寄存器相对寻址方式的写中也起了作用。

相对基址加索引地址是上述七种寻址方式中最复杂的一种,它可以转化为其他类型的内存寻址方式。表3.1列出了这种寻址方式与其他寻址方式之间的变形关系。

源操作数指令的变体;源操作数的寻址方式

仅偏移MOV AX,[100H]直接寻址模式

只有一个寄存器是MOV AX、[BX]或MOV AX、[SI]寄存器间接寻址模式

有一种寄存器和偏移MOV AX、[BX+100H]或MOV AX、[SI+100H]寄存器相对寻址方式。

有两个寄存器MOV AX,[BX+SI]基址加索引地址。

有两个寄存器和偏移MOV AX,[BX+SI+100H]相对基址加索引地址。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 相对基址加变址寻址方式

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情