汇编语言--寄存器间接寻址

        在汇编语言中 , 我们主要涉及了7中存储方式 , 而涉及到数据在寄存器以及存储器之间的存取以及提出的方式就要显得复杂一些 . 本文旨在以通俗的语言描述这些寻址方式之间的联系 . 

        在认识以及应用这些寻址方式之前 , 我们首要应当了解一个数据在寄存器当中的物理地址是怎么算的 . 

        物理地址由段址和段内的偏移量决定的 , 这个段址有代码段寄存器(CS) , 数据段寄存器(DS) , 堆栈段寄存器(SS) , 都可以应用 , 具体用哪个可以自己来决定 . 偏移量通常可以存放在BX , BP , SI , DI中 , 当然了 , 具体想存在哪个里面自己定义就好 . 如果要用BP , 那么默认的段地址是在SS段 , 其他的默认是在DS段 . 

        举个例子 : 我有一个数L , 要把这个数放在存储器中 , 然后在之后要采用寄存器间接寻址找到它 , 我们可以这样做 : 

MOV     AX ,  L

MOV     SI  ,  2000H   ; 那个2000H是我们自己定义的哟

MOV     [SI]  ,  AX        ; 这样子会把我们AX寄存器中L的值存放在[SI]这个地址里 . 

[SI] 表示的是物理地址 , 计算的方式就是DS*16+SI ; 当然我们也不必知道它是怎么来的 , 我们只是了解它的意义就好了 . 

在之后要想再使用这个L的值的话 , 就可以这样来做:

MOV     AX , [SI]

这样子我们就可以通过AX这个寄存器来进行一些运算啦 . 


同样的 , 如果一个程序中需要几个不同的像L一样的变量 , 那么我们在把它们放到存储器的时候只需要给 SI 赋不同的值就行了 , 不过要记得放在哪里了哟 . 

利用这样的寻址方式来进行编程虽然比立即寻址要麻烦一些 , 但是从程序执行的效率来看 , 还是要更好一些 . 


  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值