第1个回答 2010-05-23
用LOOPE指令控制循环,实现循环时要以下两个条件同时成立:
一个是CX自减1后不为零;一个是ZF位等于1。
LOOPE NEXT指令前面一条CMP AL,[DI]这个就是用来控制ZF位的。
即循环结束有两种情况:
一个是遍历完这条字符串,(CX)=0,则跳出循环
一个是找到非'A'的字符,CMP后ZF=0,则跳出循环
需要注意的第一点是:跳出循环后MOV BX,DI这条指令本身不影响ZF位的值!
所以后面还是可以用JNE OK指令来看,这个程序在结束循环时到底有没有找到非'A'字符。如果有(ZF=0),则不执行MOV BX,-1直接跳到程序结尾;如果没有(即字符串是一串的'A',ZF始终都是1),则执行MOV BX,-1