首页 技术资料正文

汇编语言CMP(比较)指令:比较整数(字节跳动工资待遇)

piaodoo 技术资料 2022-08-27 06:24:29 1142 0

汇编语言CMP(比较)指令:比较整数(字节跳动工资待遇)

汇编语言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结果ZFCF
目的操作数 < 源操作数01
目的操作数 > 源操作数00
目的操作数 = 源操作数10
如果比较的是两个有符号数,则符号标志位、零标志位和溢出标志位表示的两个操作数之间的关系如右表所示:
CMP结果标志位
目的操作数 < 源操作数SF ≠ OF
目的操作数 > 源操作数SF=OF
目的操作数 = 源操作数ZF=1
CMP 指令是创建条件逻辑结构的重要工具。当在条件跳转指令中使用 CMP 时,汇编语言的执行结果就和 IF 语句一样。下面用三段代码来说明标志位是如何受到 CMP 影响的。设 AX=5,并与 10 进行比较,则进位标志位将置 1,原因是(5-10)需要借位:

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 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119652.html

搜索