CMPXCHG指令
指令
2023-09-27 14:21:15 时间
一、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寄存器。象这种隐含使用其他寄存器的指令还有不少。对于哪种操作影响标志位也需要慢慢熟悉。
相关文章
- 回过头再看 计算机体系结构6----编译器指令重排序--导致并发执行出现问题
- SSE图像算法优化系列九:灵活运用SIMD指令16倍提升Sobel边缘检测的速度(4000*3000的24位图像时间由480ms降低到30ms)。
- JSP三大指令 /9大内置对象 /Javabean / EL
- 47指令周期的数据流
- redis常用指令总结以及功能介绍
- 基于memcache的缓存机制的6个指令
- linux查看系统的一些版本号指令
- Redis如何处理每条指令的
- docker容器启动时执行脚本 run /bin/bash执行多条指令
- [ARM-assembly]-ARMV8-A64指令编码介绍
- Vue自定义指令原来这么简单
- [前端学习]一文 Vue指令
- 指令汇B新闻客户端开发(五) ShareSdk的使用
- Nginx 配置指令的执行顺序(八)
- 指令相关