时间:2021-05-19
本文实例讲述了汇编语言中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)= 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 < 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 : not equal
b: below
nb : not below
a : above
na : not above
编程: 统计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 next ;如果不小于8转到next,继续循环 inc ax ;如果小于8就将计数值加1next:inc bx loop s程序执行后: ax = 2
还有疑问的可以去查看一下指令手册,讲解的比较细致
希望本文所述对大家汇编语言程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
汇编语言是一种工具程序设计语言,用于将汇编语言源程序转换为机器语言。 在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbo
汇编语言是独立于机器的程序设计语言。汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言。 在汇编语言中,用助记符代替机器指令的操作码,
汇编语言是一种用于电子计算机、微处理器、微控制器或其它可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令
汇编语言汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代
汇编语言汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代