汇编语言寄存器相对寻址方式

本文内容

操作数的有效地址 EA 是一个寄存器和位移量之和,这种寻址方式称为寄存器相对寻址。和寄存器间接寻址方式不同的是,有效地址 EA 的构成除了寄存器以外,还要加上位移量。这里允许的寄存器和默认段寄存器的规定与寄存器间接寻址方式中一样,默认搭配也是 DS 段寄存器和 BX、SI、DI。SS 段寄存器和 BP。

操作数的物理地址=(DS)×10H+(BX)+8位(16)位位移量

操作数的物理地址=(DS)×10H+(SI)+8位(16)位位移量

操作数的物理地址=(DS)×10H+(DI)+8位(16)位位移量

操作数的物理地址=(SS)×10H+(BP)+8位(16)位位移量

由于有相对的位移量,所以称为寄存器相对寻址方式。此寻址方式常用于查表操作。可利用寄存器做首地址,用位移量做指针寻找表中特定的单元;或用位移量做表格的首地址,用寄存器做指针,来连续查表。

例 11 MOV AX,TOP[SI]

以上指令 TOP 为符号地址,即位移量。

已知(DS)=1500H,(SI)=7310H,TOP=25H,则

有效地址 EA=(SI)+TOP=7310H+25H=7335H

物理地址=(DS)×10H+EA=15000H+7335H=1C335H

若(1C335H)=2428H

执行指令后,(AX)=2428H

例 12 MOV[BX+2623H],AX

或写成 MOV[BX].2623H,AX

已知(DS)=1500H,(BX)=6854H,则

有效地址 EA=(BX)+2623H=8E77H

物理地址=(DS)×10H+EA=15000H+8E77H=1DE77H

若(1DE77H)=3567H

执行指令后:(AX)=3567H

例 13

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
MOV AX,ARRY[BX]

MOV AX,[ARRY][BX]

MOV AX,[ARRY+BX]

MOV AL,BUF[BX]

MOV AL,[BX+8H]

MOV AL,[BX].8H

前 3 条指令写法不同,但都是等效的。其中位移量 ARRY,通常是 16 位的变量,因为要和 16 位的寄存器匹配。注意,这里源操作数的有效地址是由 ARRY 的偏移地址加上 BX 的值组成。ARRY 也可以是常量,第 4 条指令中的 BUF 通常是 8 位的变量,也可以是常量。

寄存器间接寻址方式的用途:特别适用于访问一维数组,寄存器可作为数组下标(或数组元素的位置),利用修改寄存器的值来定位数组中的各个元素。

请参阅

(完)

comments powered by Disqus

本文内容