cmp [eax],0 //eax里面的值是0
jne end //end是子程序
请问这二句是什么意思呢 jne 是[eax] ,0相等则跳吗
初学汇编 麻烦老手指示下 表示感谢
意思是cmp [eax],0结果如果不相等即标志位ZF=0,则执行jne end语句。
jne是一个条件转移指令。当ZF=0,转至标号处执行。
cmp [eax],0 的逻辑含义是比较[eax],0。如果执行后:
ZF=1则[eax]=0
ZF=0则[eax]!=0
SF=1则[eax]<0
SF=0则[eax]>=0
SF=0并ZF=0则[eax]>0
SF=1或ZF=1则[eax]<=0
扩展资料:
CPU在执行cmp指令的时候,也包含两种含义:进行无符号运算和进行有符号数运算。
cmp ah,bh
如果ah=bh,则ah-bh=0,所以ZF=1
如果ah≠bh,则ah-bh≠0,所以ZF=0
所以根据cmp指令执行后ZF的值,就可以知道两个数据是否相等。
如果ah<bh则可能发生以下情况
对于有符号数运算,在ah<bh情况下,ah-bh显然可能引起SF=1既结果为负比如:
ah=1,bh=2则ah-bh=0FFH,0FFH为-1的补码,因为结果为负,所以SF=1。
ah=0FEH,bx=OFFH;则ax-bx=-2-(-1)=OFFH,因为结果为负,所以SF=1。
参考资料:百度百科-CMP指令