汇编语言CMP(比较)指令:比较整数(字节跳动工资待遇)
如果比较的是两个有符号数,则符号标志位、零标志位和溢出标志位表示的两个操作数之间的关系如右表所示:
CMP 指令是创建条件逻辑结构的重要工具。当在条件跳转指令中使用 CMP 时,汇编语言的执行结果就和 IF 语句一样。下面用三段代码来说明标志位是如何受到 CMP 影响的。设 AX=5,并与 10 进行比较,则进位标志位将置 1,原因是(5-10)需要借位:
汇编语言CMP(比较)指令:比较整数
了解了所有按位操作指令后,现在来讨论逻辑(布尔)表达式中的指令。最常见的布尔表达式涉及一些比较操作,下面的伪码片段展示了这种情况:
if A > B ...while X > 0 and X < 200 ...if check_for_error(N) = true
x86 汇编语言用 CMP 指令比较整数。字符代码也是整数,因此可以用 CMP 指令。CMP(比较)指令执行从目的操作数中减去源操作数的隐含减法操作,并且不修改任何操作数:CMP destination,source
标志位
当实际的减法发生时,CMP 指令按照计算结果修改溢出、符号、零、进位、辅助进位和奇偶标志位。如果比较的是两个无符号数,则零标志位和进位标志位表示的两个操作数之间的关系如右表所示:CMP结果 | ZF | CF |
---|---|---|
目的操作数 < 源操作数 | 0 | 1 |
目的操作数 > 源操作数 | 0 | 0 |
目的操作数 = 源操作数 | 1 | 0 |
CMP结果 | 标志位 |
---|---|
目的操作数 < 源操作数 | SF ≠ OF |
目的操作数 > 源操作数 | SF=OF |
目的操作数 = 源操作数 | ZF=1 |
mov ax, 5cmp ax,10 ; ZF = 0 and CF = 1工作日英语
1000 与 1000 比较会将零标志位置 1,因为目标操作数减去源操作数等于 0:mov ax,1000mov cx,1000cmp cx, ax ;ZF = 1 and CF = 0
105 与 0 进行比较会清除零和进位标志位,因为(105-0)的结果是一个非零的正整数。mov si,105cmp si, 0 ; ZF = 0 and CF = 0
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。