zoukankan      html  css  js  c++  java
  • CMPXCHG指令

    一、CMPXCHG汇编指令详解。

    这条指令将alaxeax ax中的值与首操作数比较:

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

    2.如果不等, 首操作数的值装载到alaxeax ax,并将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) 。
    寄存器( alaxeax ax )中的值与首操作数(CX)不等, 那么首操作数的值 (CX)直接装载到alaxeax ax中,即(AX)= (CX 的值2300H),并将zf清0。

    最终得到:

    (AX)=2300H,ZF=0

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

  • 相关阅读:
    NSPredicate
    label 下划线加自动换行
    【搬运】快速增加文档注释
    NSSortDescriptor 数组排序
    【搬运】打开模拟器沙盒目录
    NSTimer 详解
    Android打开外部DB文件
    图片压缩与缓存
    StartService与BindService
    Android发送通知栏通知
  • 原文地址:https://www.cnblogs.com/igoodful/p/9493812.html
Copyright © 2011-2022 走看看