在x86标志寄存器中,Aux Carry和Common Carry有什么区别?

时间:2012-10-13 13:38:38

标签: x86 cpu-architecture flags cpu-registers

我想知道这个x86寄存器标志在DOS / Windows程序Debug中意味着什么:

辅助进位(AC = 1NA = 0

它与Common carry具有相同的含义吗? (CY = 1NC = 0

2 个答案:

答案 0 :(得分:4)

当指令导致进位或借位3时,辅助进位标志置位。与CY相同,但对于字节中低位半字节的高位。缩写AC是旧式,标志在英特尔处理器手册中命名为“AF”,简称“调整标志”。它由少数执行BCD计算调整的x86指令使用,如AAC(加法后的Ascii调整)和DAA(加法后的十进制调整)。这些指令可以追溯到计算的石器时代,当时通常以BCD编码提供操作数。它在半字节中编码十进制数字。像十进制99一样是BCD中的10011001。

当时,处理器通常会为涉及BCD的计算提供专用硬件支持。这是古老的历史,程序员习惯于用二进制编码数字。好吧,编译器最重要的是。值得注意的是,这些指令不再出现在x64指令集中。为更有用的64位特定操作码腾出空间。

答案 1 :(得分:1)

辅助进位标志AF监视4位(半字节)进位,而公共进位标志CF监视来自操作数大小<的MSB的进位/ em>的。如果使用8位寄存器,这可以是8位进位,例如alah,如果使用16位寄存器ax则为16位进位,使用相应寄存器时为32位或64位进位,例如: <{1}}或eax