xiangzhong1977 发表于 2013-6-16 13:38:47

程序中有一处不明白,为什么不是用JZ,而是用JNZ

大家好,我是一枚菜鸟,刚开始学汇编,现在正在看中山大学汇编教程,教程中有给出一道程序,具体内容如下:
有一串L字符的字符串存储于首地址为TALBE的存储器中。如要求在字符串中查找“空格”字符,找到则继续执行,如过没有找到则转到NOT-FOUND去执行,程序如下:
1                     MOV CX,L
2                     MOV SI,-1
3                     MOV AL,20H
4   NEXT:       INC SI
5                  CMPAL,TABLE
6                  LOOPNENEXT
7                  JNZ   NOT-FOUND(?这行为什么不是用JZ,也就是说为什么不是写成JZNOT-FOUND)
8                   . . . . . .
9NOT-FOUND:
10               . . . . . .

我不明白为什么第7行是用JNZ,而不是用JZ呢?打个比方,如果字符的长度L是10,第7个字符是空格,那么程序执行到第7次循环时就会跳出循环,此时执行JZ,判断CX是否为0,此时CX是7不为0,则顺序执行下面的程序,如果该字符串中是没有空格的,那么当循环到CX=0时,就会跳出循环,执行JZ,判断CX是否为0,此时CX=0,因此,程序应该跳到NOT-FOUND中去执行,不知道是不是应该是这样分析的。请教各位高手指点一二,谢谢大家啦

xiangzhong1977 发表于 2013-6-17 11:48:18

没有人啊,自己顶一下,求教啊

天下无敌丑爸爸 发表于 2013-6-17 12:09:58

本着小甲鱼无私奉献精神,我来给你回复 要给我鱼币啊!LOOPNE的意思是当ZF=1或者CX=0的时候结束循环,所以当你L次都查完了之后还是没有相同的ZF还是为0所以用JNZ跳转,如果有相同的JNZ可以忽略!

xiangzhong1977 发表于 2013-6-18 00:33:58

恩,好像有点明白了,谢谢,那个鱼币怎么给你啊,我鱼币不多啊,还要用来下载课件的,所以,只好给你3个鱼币啦,你不介意吧,呵呵!
页: [1]
查看完整版本: 程序中有一处不明白,为什么不是用JZ,而是用JNZ