变址寻址方式:相对基址加变址寻址方式

  操作数在存储器中其有效地址是个基址寄存器(BX、BP)值、个变址寄存器(SI、DI)值和指令中8位/16位偏移量之和

  在不使用段超越前缀情况下规定:如果有效地址中含有BP则其缺省段寄存器为SS;否则其缺省段寄存器为DS

  指令中给出8位/16位偏移量用补码表示在计算有效地址时如果偏移量是8位则进行符号扩展成16位当所得有效地址超过0FFFFH则取其64K

  例3.5假设指令:MOVAX,[BX+SI+200H]在执行时(DS)=1000H(BX)=2100H(SI)=0010H内存单元12310H内容为1234H问该指令执行后AX值是什么?

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

  EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H

  该操作数物理地址应由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]等是即所用寄存器不能在“[“”]”之外该限制对寄存器相对寻址方式书写也同样起作用

  相对基址加变址寻址方式是以上7种寻址方式中最复杂种寻址方式它可变形为其它类型存储器寻址方式表3.1列举出该寻址方式与其它寻址方式之间变形关系

  源操作数指令变形源操作数寻址方式

  只有偏移量MOV AX,[100H]直接寻址方式

  只有个寄存器MOV AX,[BX]或MOVAX,[SI]寄存器间接寻址方式

  有个寄存器和偏移量MOV AX,[BX+100H]或MOVAX,[SI+100H]寄存器相对寻址方式

  有二个寄存器MOV AX,[BX+SI]基址加变址寻址方式

  有二个寄存器和偏移量MOV AX,[BX+SI+100H]相对基址加变址寻址方式
Tags:  寻址方式 基址变址寻址 相对寻址方式 变址寻址方式

延伸阅读

最新评论

发表评论