王爽汇编语言 检测点9.3

题目

这里写一下自己的理解,作为笔记。

s:mov cl,[bx]
mov ch,0

这段代码的意思是从2000H段的偏移地址为0的地方每次取出1个字,不过因为题目要求的是寻找字节,但是由于loop进行比较的是寄存器cx,因此我们需要使用一整个cx来存储当前字节。但是该如何做呢:只需要从2000H:[BX]的地方读取cl的部分,然后把ch的部分置0,就可以获得我们所需的当前字节了。

inc bx

这段代码很好理解,因为需要一个个比较每一个字节,所以每次偏移地址加1。同样因为这里是这样写的,所以才需要像如上一样设置ch为0,为了防止读到cx中ch的部分。

inc cx

然后这是需要填空的部分,一开始我认为这里写的很奇怪,甚至认为答案应该是jcxz ok。题目的意思是用loop来进行实现,实际上就是想让loop来跳转到目标语句,而其条件为cx=0。要注意,loop是先对cx–,再判断cx==0的,因此如果当前cx里面存放的字节就是0,那么如果没有这句话,当loop进行完成后,cx的值将是-1(这个数应该由补码表示),那么这样显然是不对的,因此,加上这句话,令cx的值加上1(0001H),再进行loop判断时(变为0000H),就可以正常跳转到ok上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值