【发布时间】:2016-07-29 07:13:48
【问题描述】:
我知道在执行8位二进制加法时,如果第3位到第4位有进位,则辅助标志设置为1;但是添加 2 个 16 位数字呢?我在网上看不到任何明确的答案。
我正在研究英特尔 8086 微处理器...
例如,当我添加这两个数字时,0x30a2 和 0xf1ac
0011 0000 1010 0010 + 1111 0001 1010 1100
CF=1
ZF=0
PF=1
SF=0
OF=1
AF=?
我不知道在哪里检查它
【问题讨论】:
-
哪个cpu?并非所有行为都相同,通常第 3 位到第 4 位进位标志用于 BCD 支持。
-
Th AF 标志仍然仅适用于执行最低半字节(最低 4 位)。在您的示例中,最低的半字节是 0010+1100 。显然第 3 位没有进位,所以 AF =0.
-
风向标回答说“高或低半字节指s到LOW顺序BYTE的16-位值。” .所以被引用的半字节在最低有效字节中。半字节总是 4 位(不是 8 位)。它基本上说,无论您的寄存器有多少位(也适用于 32 位),AF 标志将始终根据低位(最低有效字节)中最低半字节的执行来设置
-
您真正想要完成的是什么?您是否正在尝试进行 BCD 算术?如果没有,AF 标志就不是很有用。
-
如果您不再将 bit 3 称为 3rd bit 并将 bit 4 称为第 4 位。唯一好的措辞是:第 3 位是第 4 位,第 4 位是第 5 位。
标签: assembly binary addition alu carryflag