cmp指令和汇编语言微机原理是什么?

cmp指令和汇编语言微机原理是什么?,第1张

cmp是汇编的比较指令;

cmp(compare)指令的作用:进行比较两个 *** 作数的大小;

例如:

cmp oprd1,oprd2

为第一个 *** 作减去第二个 *** 作数,但不影响第两个 *** 作数的值;

它影响flag的CF,ZF,OF,AF,PF

怎么判断大小呢?

若执行指令后;

ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0

当无符号时:

CF=1 则说明了有进位或借位,cmp是进行的减 *** 作,故可以看出为借位,所以,此时oprd1<oprd2

CF=0 则说明了无借位,但此时要注意ZF是否为0,若为0,则说明结果不为0,故此时oprd1>oprd2

当有符号时:

若SF=0,OF=0 则说明了此时的值为正数,没有溢出,可以直观的看出,oprd1>oprd2

若SF=1,OF=0 则说明了此时的值为负数,没有溢出,则为oprd1<oprd2

若SF=0,OF=1 则说明了此时的值为正数,有溢出,可以看出oprd1<oprd2

若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2

最后两个可以作出这种判断的原因是,溢出的本质问题:

两数同为正,相加,值为负,则说明溢出;

两数同为负,相加,值为正,则说明溢出;

故有,正正得负则溢出,负负得正则溢出。

功能说明:比较两个文件是否有差异。

语法:cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]

补充说明:当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为”-”,则cmp指令会从标准输入设备读取数据。

参数:

 -c或–print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。

 -i<字符数目>或–ignore-initial=<字符数目> 指定一个数目。

 -l或–verbose  标示出所有不一样的地方。

 -s或–quiet或–silent  不显示错误信息。

 -v或–version  显示版本信息。

 –help  在线帮助。

实例:

1. 要确定两个文件是否相同,请输入:

cmp prog.o.bak prog.o

这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:

prog.o.bak prog.o differ: char 4, line 1

如果显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 相同,但在 prog.o 中还有其他数据。

2. 要显示不同字节的每个对,请输入:

cmp -l prog.o.bak prog.o

这比较文件,然后显示字节数(使用十进制格式)和每个不同的不同字节(使用八进制格式)。例如,如果第五个字节在 prog.o.bak 中是八进制 101,在 prog.o 中是 141,则 cmp

不是这样的

if COMMAND的语义是, 如果COMMAND执行成功, 而linux下面成功的标志往往是0.

也就是说COMMAND返回0的话, 就继续执行, 否则执行else。

这一点和C、JAVA这些编程语言是相反的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7259627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存