<span>CMPXCHG指令</span>

一、CMPXCHG汇编指令详解。

这条指令将al\ax\eax\rax中的值与首操作数比较:

1.如果相等,第2操作数的直装载到首操作数,zf置1。(相当于相减为0,所以0标志位置位)

2.如果不等, 首操作数的值装载到al\ax\eax\rax,并将zf清0

二、举例说明。

例如:

CMPXCHG CX,DX 首操作数: CX 第2操作数:DX 

(1) 如果指令执行前:

(AX) = 2300H (CX) = 2300H (DX) = 2400H 

则指令执行后, 因(CX)= (AX), 故
第2操作数(DX)直装载到首操作数(CX),ZF置1。
(CX)=2400H,ZF=1

(2) 如果指令执行前:

(AX) = 2500H (CX) = 2300H (DX) = 2400H 

则指令执行后因首操作数(CX)不等于(AX), 即(CX)!=(AX) 。
寄存器( al\ax\eax\rax )中的值与首操作数(CX)不等, 那么首操作数的值 (CX)直接装载到al\ax\eax\rax中,即(AX)= (CX 的值2300H),并将zf清0。

最终得到:

(AX)=2300H,ZF=0

CMPXCHG隐含使用EAX寄存器。象这种隐含使用其他寄存器的指令还有不少。对于哪种操作影响标志位也需要慢慢熟悉。

全部评论

相关推荐

研一开学九月份速成的Java,项目是苍穹外卖和黑马点评,算法基础不好,八股文较为熟练,想找份小厂日常实习,希望牛友们给点意见,蟹蟹啦
求offer的花生米很聪敏:三个月学了这么多?spring springmvc mybatis springboot jvm juc,还做完了两个项目,还熟悉八股,会点算法。卧槽,我该反思了。我暑假开始的,就做了外卖,spring springmvc boot 那些原理好多都忘了,还在刷 jvm 视频,八股和算法也没开始
点赞 评论 收藏
分享
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务