1

我想知道这个 x86 寄存器标志在 DOS/Windows 程序 Debug 中的含义:

辅助进位(AC = 1NA = 0

它与普通进位具有相同的含义吗?(CY = 1NC = 0

4

2 回答 2

4

当指令导致第 3 位进位或借位时,设置辅助进位标志。与 CY 相同,但用于字节中低半字节的高位。AC的缩写是old style,标志在Intel处理器手册中被命名为“AF”,是“Adjust Flag”的缩写。它被少数执行 BCD 计算调整的 x86 指令使用,例如 AAC(加法后的 Ascii 调整)和 DAA(加法后的十进制调整)。这些指令可以追溯到计算的石器时代,那时以 BCD 编码提供操作数仍然很普遍。它将十进制数字编码为半字节。就像十进制 99 在 BCD 中是 10011001。

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

于 2012-10-13T14:51:58.920 回答
1

辅助进位标志AF监视 4 位(半字节)进位,而通用进位标志监视操作数大小CF的 MSB 的进位。如果使用 8 位寄存器,这可能是 8 位进位,例如,如果使用 16 位寄存器,则可能是 16 位进位,而当使用相应的寄存器时,这可能是 32 位或 64 位进位,例如,或分别。alahaxeaxrax

于 2014-03-31T01:32:16.257 回答