8086CPU中的寻址方式二

关于转移地址的寻址方式

程序要实现转移,要知道转移的目的地的地址,寻找这种地址的方式,称为转移地址的寻址方式。

分为两种

  1. 段内转移
  2. 段间转移

段内转移

段内转移,只有IP值发生改变,CS没变。

寻址方式有两种:

  1. 直接寻址
  2. 间接寻址

直接寻址

指令中直接给出转移地址,转移地址可以用标号表示。

...
L1:mov AX,BX
...
   JMP L1

JMP为无条件转移指令。L1表示的就是mov AX,BX这条指令的地址,所以她是在转移指令中直接给出,属于段内直接寻址。

段内转移地址是当前指令指针IP的值,加上相对位移量的值。所以也叫相对寻址。

直接寻址的概念来自指令语句的书写。相对寻址的概念来自转移的原理。

8086系统中,所有的条件转移指令,只能在段内转移,且转移范围为-128~+127之间。

所有条件转移指令都是段内直接寻址。只有JMP能做段内,也能做段间。条件转移指令想要做段间,只能利用JMP做桥接。

间接寻址

转移地址间接给出,例如

...
mov BX,OFFSET L2
JMP BX ;(BX)->IP
...
L2: ...

JMP BX,BX内容作为转移地址,是段内间接寻址。

也可以通过变量给出,例如

...
TABLE DW L2  ;数据段定义一个字节变量,存放L2的偏移地址
JMP TABLE    ;(TABLE)->IP
...
L2: ...

JMP TABLE,从前面数据寻址方式看,是从TABLE这个存储器单元取一个字给IP,做转移地址,TABLE是数据的直接寻址,我们要做的是把存的内容做转移地址。从转移地址的寻址方式看,是段内间接寻址。具体讲就是:直接寻址方式的段内间接寻址。数据的寻址方式有5种,用任何一种都可以。

原文地址:https://www.cnblogs.com/ckk-blog/p/14534395.html