汇编-灵活的定位内存地址的方法

我们之前都是用ds:[bx]这样的形式来表示一个地址,现在我们可以用更加灵活的方法来表示一个内存地址。

[bx+idata] 首先可以用[bx+idata]来表示一个偏移地址,例如[200+bx]表示在[bx]的内容加上200的地址。mov ax,[bx+200] 这里的ax = ds*16+(bx)+200,这个指令也可以写作 mov ax, [bx+200] mov ax,200[bx] mov ax, [bx].200 我们用这个方法可以完成对段地址相同但是偏移地址不同的两个块同时进行操作。也可以在一个循环中同时操作这两块内容。

SI和DI 这两个寄存器是8086CPU中和bx功能相近的寄存器,我们甚至可以在使用bx的地方用这两个寄存器来代替。但是这两个寄存器的功能不仅如此,我们还可以用这两个寄存器结合上面的方法来表示地址。比如我们可以用SI和DI来替换上面的idata进行内存地址的偏移。[bx+si]和[bx+di]的效果和[bx+idata]是有一点区别的,[bx+idata] = (bx)+idata [bx+si] = (bx) + (si)

[bx+si(di)+idata] 结合上面两种方法,我们可以直接使用三个元素控制偏移地址。[bx + si + idata] = (bx) + (si) + idata

我们要明确一点就是在8086CPU中只有bx、si、di、bp这四个寄存器可以用[...]的格式来表示偏移地址。并且只有四个固定的组合:bx和si、bx和di、bp和si、bp和di。mov ax, [bx+bp] mov ax, [si+di]这两个语句都是错误的。而且bp默认的段寄存器是ss,bx默认ds。

微信扫码订阅
UP更新不错过~
关注
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CW_tao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值