AAA

ASCII 添加后调整

stableVMJITAOTinstruction

编码

操作码指令Op/En64 位兼容/传统说明
37AAAZO无效有效ASCII 添加后调整 AL.

实测开销

未实测:不在 64 位处理器上运行。

涉及的标志位

说明

调整两个未打开的 BCD 值的总和,以创建一个未打开的 BCD 结果。 AL登记册是本指令的隐含来源和目标操作数. AAA指令只有在遵循ADD指令时才有用,该指令添加(二进制添加)两个已解锁的BCD值,并在AL寄存器中存储一个字节结果. AAA指令随后调整了AL寄存器的内容,以包含正确的1位无包装的BCD结果.

如果加法产生一个十进制载荷,则AH的寄存器递增1,CF和AF的旗子被设定. 如果没有十进制的载体,则CF和AF的旗帜被清除,AH的注册号不变. 无论是哪种情况,AL登记簿中第4至第7项被设定为0。

此指令以兼容模式和遗留模式执行 。 在64位模式下无效 。

行动

IF 64-Bit Mode
    THEN
          #UD;
    ELSE

        IF ((AL AND 0FH) > 9) or (AF = 1)

                THEN
                      AX := AX + 106H;
                      AF := 1;
                      CF := 1;

                ELSE
                      AF := 0;
                      CF := 0;

          FI;
          AL := AL AND 0FH;
FI;

受影响的旗帜

如果调整结果为小数的顺差,AF和CF旗被设定为1;否则它们被设定为0。 OF, SF, ZF,和PF的旗帜没有定义.

异常

保护模式
#UD如果使用 LOCK 前缀 。
实地址模式
与保护模式相同的例外.
虚拟 8086 模式
与保护模式相同的例外.
兼容模式
与保护模式相同的例外.
64 位模式
#UD如果在64位模式下.

来源