Я делаю эмулятор GameBoy и в настоящее время запускаю его через тестовые ПЗУ, расположенные здесь. а>.
Один из тестов в cpu_instrs.zip
выглядит следующим образом:
set_test 5,"POP AF"
ld bc,$1200
.loop:
push bc
pop af
push af
pop de
ld a,c
and $F0
cp e
jp nz,test_failed
inc b
inc c
jr nz,.loop
Насколько я понимаю, похоже, что этот тест всегда будет неудачным. В первом цикле нулевой флаг не будет установлен с inc c
, а затем код в конечном итоге перейдет к test_failed
, так как во втором цикле e
будет равно 1, а a
будет 0.
Что мне здесь не хватает?