我是靠谱客的博主 冷静砖头,最近开发中收集的这篇文章主要介绍CMP指令和标志位,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

      汇编中的CMP指令是一条比较指令,对比两个操作数的大小,但是计算机并不理解大小,它只是对两个操作数进行了一次减法操作,然后对一些标志位进行了一些逻辑运算来判断哪个数大,涉及的标志位有如下一些:

      CF:是否有进位或者借位

      ZF:0标志位,就是结果是否为0

      OF:溢出标志位,是否计算机结果溢出了

      SF:符号位,0为正,1为负

 

      AF:辅助进位标志位,我也不知道干嘛的

      PF:奇偶标志位,这个好判断呀,看最后一位是0是1就行了

 

      CMP指令的格式为 CMP op1 op2 用到的标志位有CF,ZF,OF,SF四个,对于两个无符号数的情况,两数相减不可能溢出了,看CF和ZF标志位就可以,如果ZF为1,说明结果是0,那不用说,两数相等了(有符号数也是这样),如果ZF为0,则如果CF为1,表示有借位,op1<op2,否则op1>op2。

      对于有符号数,就要看符号标志位SF和溢出标志位OF了,如果是两个两个同号的数,两数相减也是不可能溢出的,OF一定为0,此时,如果SF为1,则表示op1<op2,否则op1>op2,如果是两个异号的数相减,不溢出的情况跟上面的一样(OF==0,SF==1?op1<op2:op1>op2)。

      如果溢出了,则要分析一下,此时OF=1表示溢出,如果SF也为1,表示结果为负数,假设op1为负数,op2正数,相减的结果为负数,没溢出,假设不成立,op1是整数,op2是负数,所以op1>op2,SF为0的情况可以同样分析可得op1<op2。

 

【end】

最后

以上就是冷静砖头为你收集整理的CMP指令和标志位的全部内容,希望文章能够帮你解决CMP指令和标志位所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部