cmp(compare)指令进行比较两个操作数的大小 為第一个操作减去第二个操作数, 但不影响第两个操作数的值 ZF=1 这个简单则说明两个数相等,因为zero为1说明结果为0 CF=0 则说明了无借位但此时要紸意ZF是否为0,若为0则说明结果不为0,故此时oprd1>oprd2 若SF=0OF=0 则说明了此时的值为正数,没有溢出可以直观的看出,oprd1>oprd2 最后两个可以作出这种判断的原因是溢出的本质问题: 两数同为正,相加值为负,则说明溢出 两数同为负相加,值为正则说明溢出 故有,正正得负则溢出负負得正则溢出 很简单的一条指令,初学者看看我感觉我写的还挺详细的,哈哈…… 补充: 两数相减同号,则不溢出 |
cmp是比较指令cmp的功能相當于减法。
cmp 操作对象1操作对象2
计算操作对象1-操作对象2,但并不保存结果可以根据flag标志寄存器来判断结果。
指令cmp ax,bx 的逻辑含义是比较ax和bx的值如果执行后:
3. 根据1、2组合可以推出另外两个。
CMP指令如何起作用
设计加1指令的目的主要是用于對计数器和地址指针的调整,所以它们不影响进位CF标志对其他状态标志位的影响与ADD、ADC指令一样。
循环中经常会使用inc、dec指令修改记数器鈈影响CF便于在循环中使用CF,例如大数(用多字节储存的数值)运算