汇编语言中cmp指令用法笔记与总结
本文实例讲述了汇编语言中cmp指令用法。分享给大家供大家参考,具体如下:
cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果.
cmp指令格式:cmp 操作对象1,操作对象2
功能:计算操作对象1-操作对象2但不保存结果,仅仅根据计算结果对标志寄存器进行设置.比如cmpax,ax 是做ax-ax的运算,结果为0,但并不在ax中保存,仅影响flag的相关各位.
指令执行后:zf=1,pf=1,sf=0,cf=0,of=0;
下面的指令:
movax,8 movbx,3 movax,bx
执行后:(ax)=8,zf=0,pf=1,sf=0,cf=0,of=0
如果ax=bx则ax-bx=0,所以:zf=1
如果ax!=bx则ax-bx!=0,所以:zf=0
如果ax 如果ax>=bx则ax-bx将不必借位,所以:cf=0 如果ax>bx则ax-bx既不必借位,结果又不为0,所以:cf=0并且zf=0 如果ax<=bx则ax-bx既可能借位,结果可能为0,所以: cf=1或zf=1 检测比较结果的条件转移指令 je 等于则转移 zf=1 jne 不等于则转移 zf=0 jb 低于则转移 cf=1 jnb 不低于则转移 cf=0 ja 高于则转移 cf=0且zf=0 jna 不高于则转移 cf=1或zf=1 e:equal ne:notequal b:below nb:notbelow a:above na:notabove 编程:统计data段中数值小于8的字节的个数,用ax保存统计结果 程序执行后:ax=2 还有疑问的可以去查看一下指令手册,讲解的比较细致 希望本文所述对大家汇编语言程序设计有所帮助。 声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
movax,data
movds,ax
movax,0;初始化累加器
movbx,0;ds:bx指向第一个字节
movcx,8
s:cmpbyteptr[bx],8;和8进行比较
jnbnext;如果不小于8转到next,继续循环
incax;如果小于8就将计数值加1
next:incbx
loops