本文主要介绍了汇编语言中cmp指令的使用方法,结合实例形式总结分析了汇编语言cmp指令的基本功能、使用方法及操作注意事项。 需要的朋友请参考以下内容
本文介绍了汇编语言中cmp指令的使用实例。 分享仅供参考。 具体如下。
cmp是比较命令,cmp的功能相当于减法命令,只是不保存结果。cmp命令被执行后会影响标志寄存器。其他相关命令通过识别受到这些影响的标志寄存器来知道比较结果。
cmp命令格式: cmp操作对象1、操作对象2
功能:计算运算对象1 -运算对象2,但不保存结果,只根据计算结果设定标志寄存器,例如,由于cmp ax、ax进行ax - ax运算,所以结果为0,但不保存在ax中,只影响flag的相关人员
指令执行后: zf=1、pf=1、sf=0、cf=0、of=0;
下一个命令:
mov ax,8
mov bx,3
mov ax,bx
执行后:(ax )、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 bx的情况下,ax - bx产生偏移,因此: cf=1
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 :非品质
b:贝娄
nb : not below
a : above
na :非活动
编程:计数data段的数字小于8的字节的数量,并将统计结果存储在ax中
mov ax,data
mov ds,ax
mov ax,0; 累加器初始化
mov bx,0; ds:bx指向第一个字节
mov cx,8
s : cmp byte ptr [bx],8; 与8进行比较
JNB下一步; 8以上转移到next时,继续循环
inc ax; 小于8时,在计数值上加1
next:inc bx
loop s
程序执行后: ax=2
有疑问的人请检查一下指令手册。 说明很细致
希望本文所述能对大家的汇编语言编程有所帮助。