我想知道这个x86寄存器标志在DOS / Windows程序Debug中意味着什么:
辅助进位(AC = 1
或NA = 0
)
它与Common carry具有相同的含义吗? (CY = 1
或NC = 0
)
答案 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位进位,例如al
或ah
,如果使用16位寄存器ax
则为16位进位,使用相应寄存器时为32位或64位进位,例如: <{1}}或eax
。