我有一个小的 8086 仿真器,而且我已经有一个长期存在的错误 2 年了,因为 AF 在 sub 内部不能正常运行并添加指令。
我目前计算其值的方法是 8 位数字和减法:
uint8_t base=... , subt=...
base=base&0xF;
subt=subt&0xF; //isolate bottom nibble
if((int16_t)base-subt>7 || (int16_t)base-subt<-7){
flags.af=1;
}else{
flags.af=0;
}
(假设像这样的指令sub base,subt
)
添加它是这样的:
uint8_t base=... , adder=...
base=base&0xF;
adder=adder&0xF; //isolate bottom nibble
if(base+adder>7 || base+adder<-7){
flags.af=1;
}else{
flags.af=0;
}
(对于像这样的指令add base,adder
)
对于此类指令,我如何正确计算模拟器中的 AF 标志?