汇编语言CMPSB、CMPSW和CMPSD指令:比较两个操作数

CMPSB、CMPSW 和 CMPSD 指令比较 ESI 指向的内存操作数与 EDI 指向的内存操作数:

CMPSB 比较字节
CMPSW 比较字
CMPSD 比较双字

CMPSB、CMPSW 和 CMPSD 可以使用重复前缀。方向标志位决定 ESI 和 EDI 的增加或减少。

【示例】比较双字,假设现在想用 CMPSD 比较两个双字。下例中,source 的值小于 target,因此 JA 指令不会跳转到标号 L1。
.data
source DWORD 1234h
target DWORD 5678h
.code
mov esi,OFFSET source
mov edi,OFFSET target
cmpsd                 ;比较双字
ja L1                 ;若 source > target 则跳转
比较多个双字时,清除方向标志位(正向),ECX 初始化为计数器,并给 CMPSD 添加重复前缀:
mov esi,OFFSET source
mov edi,OFFSET target
cld                       ;方向为正向
mov ecx,LENGTHOF source   ;设置重复计数器
repe cmpsd                ;相等则重复
REPE 前缀重复比较操作,并自动增加 ESI 和 EDI,直到 ECX 等于 0,或者发现了一对不相等的双字。

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注