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

本文介绍了8086CPU中内存寻址的方式,特别是[bx+idata]的形式,用于表示偏移地址。讲解了[bx+si]和[bx+di]的使用,以及如何通过这些组合在同一段地址内操作不同偏移地址的数据。还提到了SI和DI寄存器的作用,并指出bx、si、di、bp四个寄存器在内存访问中的应用。
摘要由CSDN通过智能技术生成

我们之前都是用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。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值