汇编语言_第7章 更灵活的定位内存地址的方法

7.1 and和or 指令
(1)and 指令:逻辑与指令,按位进行与运算。
(2)or 指令:逻辑或指令,按位进行或运算。
7.2 关于ASCII码
ASCII是一种编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。例:61H 表示“a”。
7.3以字符形式给出的数据
用’…’ 的方式指明数据时以字符的形式给出的,编译器把它们转化为相对应的ASCII吗。
7.4 大小写转换的问题
Q:将datasg中的第一字符串转化为大写,第二个字符串转化为小写?
字母的大、小写字符对应的ASCII码对比:
在这里插入图片描述
规律:

  1. 大写字母+20H=小写字母,小写字母-20H=大写字母;
  2. 就2进制形式来看,除第5位(位数从0开始计算)外,大、小写字母的其它各位都一样。即:大写字母第5位为0,小写字母第5位为1.
    程序如下:
    在这里插入图片描述

7.5 [bx+idata]
mov ax,[bx+200]的含义:
数学化描述:ax=((ds)*16+(bx)+200)
将一个内存单元的内容送入ax,这个内存单元的长度为2个字节(字单元),存放一个字,偏移地址为bx中的数值+200,段地址在ds中。

7.6 用[bx+idata]的方式进行数组的处理
7.4节中的程序写成如下形式:
在这里插入图片描述

7.7 SI和DI
si和di 是8086CPU中和bx功能相近的寄存器,si和di 不能分成2个8位的寄存器来使用。
Q:用si 和 di 实现将字符串‘welcome to masm!’复制到它后面的数据区中?
在这里插入图片描述

7.8[bx+si] 和 [bx+di]
[bx+si]表示一个内存单元,它的偏移地址为 (bx)+(si),即bx中的数值+si中的数值。
指令mov ax,[bx+si] 含义如下:
将一个内存单元的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值,段地址在ds中。
数字化描述:(ax)=((ds)*16+(bx)+(si))
也可写成mov ax,[bx] [si]

7.9 [bx+si+idata]和[bx+di+idata]
[bx+si+idata] 表示一个内存单元,它的偏移地址为(bx)+(si)+idata,即bx中的数值+si中的数值+idata。
指令mov ax,[bx+si+idata] 的含义如下:
将一个内存单元的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值再加上idata,段地址在ds中。
数字化描述:(ax)=((ds)*16+(bx)+(si)+idata)
该指令也可写成如下形式:
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx] [si]
mov ax,[bx].200 [si]
mov ax,[bx] [si].200

7.10 不同的寻址方式的灵活应用
在这里插入图片描述
Q:将datasg段中每个单词改为大写字母?
用栈暂存外层循环CX 值
在这里插入图片描述

To be continue…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

madao1024

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值