码迷,mamicode.com
首页 > 其他好文 > 详细

IP寻址方式四

时间:2019-11-29 00:43:36      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:i+1   两种   地址   数组   四种   方式   处理   位数组   改变   

6、基址加变址寻址方式:

 

  操作数在寄存器中,操作数的有效地址由:

 

  基址寄存器之一的内容与变址寄存器之一的内容相加

 

  BX SI

 

  即: EA = +

 

  BP DI

 

  在一般情况下,如果BP之内容作为有效地址的一部分,则以SS之内容为段值,否则已DS

 

  为段值。

 

  例如:

 

  MOV AX,[BX][DI]

 

  如:(DS)=2100H,

 

  (BX)=0158H,

 

  (DI)=10A5H

 

  则EA=0158 + 10A5 = 11FD

 

  物理地址=21000 + 11FD = 221FDH

 

  221FDH地址中的内容:1234H

 

  执行该指令后AX = 1234H

 

  下面指令中,目的操作数采用基址加变址寻址,

 

  引用的段寄存器是DS: MOV DS:[BP+SI],AL

 

  下面指令中,源操作数采用基址加变址寻址,

 

  引用的段寄存器ES: MOV AX,ES:[BX+SI]

 

  这种寻址方式使用与数组或表格处理。用基址寄存器存放数组首地址,而用变地寄存器

 

  来定位数组中的各元素,或反之。由于两个寄存器都可改变,所以能更加灵活地访问数

 

  组或表格中的元素。

 

  下面的两种表示方法是等价的:

 

  MOV AX,[BX+DI]

 

  MOV AX,[DI][BX]

 

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

 

  操作数在存储器中,操作数的有效地址由于基址寄存器之一的内容与变址寄存器之一的

 

  内容及指令中给定的8位或16位位移量相加得到。

 

  BX SI 8位

 

  即: EA = + + 位移量

 

  BP DI 16位

 

  在一般情况下,如果BP中的内容作为有效地址的一部分,则以SS段寄存器中的内容为段

 

  值,否则以DS段寄存器中的内容为段值。

 

  在指令中给定的8位或16位位移量采用补码形式表示。

 

  在计算有效地址时,如果位移量是8位,那么被带符号扩展成16位。

 

  当所得的有效地址操作FFFFH时,就取其64K的模

 

  例如:

 

  MOV AX,[BX+DI-2]

 

  假设,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H

 

  物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H

 

  执行该指令后 (AX) = 7654H

 

  相对基址加变址这种寻址方式的表示方法多种多样,以下四种方法均是等价的:

 

  MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]

 

  MOV AX 1234H[BX+DI], MOV AX,1234H[DI][BX]

IP寻址方式四

标签:i+1   两种   地址   数组   四种   方式   处理   位数组   改变   

原文地址:https://www.cnblogs.com/123zhangyue/p/11954943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!