第七章 更灵活的定位内存地址的方法

引言

前面,我们用 [0] 、[bx] 的方法,在访问内存的指令中,定位内存单元的地址。这一章中,我们主要讲解一些更灵活的定位内存地址的方法和相关的编程方法。

我们的讲解将通过具体的问题来进行。

7.1 and 和 or 指令

7.2 关于ASCII码

7.3 以字符形式给出的数据

7.4 大小写转换的问题

7.5 [bx+idata]

  • 在前面,我们可以用 [bx] 的方式来指明一个内存单元,我们还可以用一种更为灵活的方式来指明内存单元:

    [bx+idata] 表示一个内存单元,它的偏移地址为 (bx)+idata(bx中的数值加上idata)

  • 我们看一下指令 mov ax, [bx+200] 的含义:

    • 将一个内存单元的内容送入 ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为 bx 中的数值加上200,段地址在 ds 中。
    • 数学化的描述为:(ax) = ((ds)*16+(bx)+200)
  • 指令 mov ax, [bx+200] 也可以写成如下格式(常用):

    • mov ax, [200+bx]
    • mov ax, 200[bx]
    • mov ax, [bx].200

7.6 用[bx+idata]的方式进行数组的处理

数组元素在内存中的组织是一段地址连续的内存单元。

7.7 SI 和 DI

  • SI和DI是8086CPU中和bx功能相近的寄存器,但是SI和DI不能够分成两个8位寄存器来使用(SI和DI在8086CPU中是16位寄存器)。

7.8 [bx+si] 和 [bx+di]

7.9 [bx+si+idata] 和 [bx+di+idata]

注:mov ax,[bx+2+si] 这句的意思是把内存中偏移地址 bx+2+si 处的两个内存单元(双字节)内容拷贝到 ax 寄存器中。因为 ax 是16位寄存器,以后的学习中,记住拷贝的长度和相关寄存器的长度一致。

7.10 不同的寻址方式的灵活应用

转载于:https://www.cnblogs.com/houhaibushihai/p/9664641.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值