欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

王爽汇编语言 检测点9.3

程序员文章站 2024-02-02 15:17:16
...

题目

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

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上。