Расчет флагов

Материал из Emuverse
Версия от 15:38, 19 февраля 2008; Panther (обсуждение | вклад) (Новая: {{Emuverse}} for 8-bit add/adc, sub/sbc (it's similar with 16-bit opcodes) A=accumulator d=data to be added/subtracted, excluding carry flag r=result after calculation carry: simply ...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0.

for 8-bit add/adc, sub/sbc (it's similar with 16-bit opcodes) A=accumulator d=data to be added/subtracted, excluding carry flag r=result after calculation


carry: simply A>r for add, A<r for sub (or if r>8bit: r>>8&1) half carry: like you said it's (r^A^d)&0x10 overflow: ((A^r)&(d^r))>>5&4 for add, ((A^d)&(A^r))>>5&4 for sub