2015-07-14 4 views
8

На странице 87 из the Game Boy CPU Manual утверждается, что инструкция CP n устанавливает флаг переноса, когда не было заимствований и что это означает, что A < n. Это, похоже, само конфликту, потому что флаг переноса установлен, когда A > n.Каково поведение флага переноса для CP на Game Boy?

В качестве примера: если A=0 и B=1, CP B устанавливает флаги, как SUB A, B, который является 0 - 1. Это становится 0 + 255 = 255, а флаг переноса не установлен, даже если A < B.

Я столкнулся с этой проблемой в других документах Z80, поэтому я не верю, что это опечатка.

Я не понимаю, как занять и SUB работать, или что-то еще происходит? Is SUB не равно ADD с дополнением двух в терминах флагов?

ответ

10

Руководство по процессору GameBoy имеет обратную сторону. SUB, SBC и CP все установлено флаг переноса, когда есть заем. Если выполняется SUB/SBC/CP A,n, перенос переносится, если n > A в противном случае это понятно.

Это соответствует работе Z-80 (и 8080). Также MAME и MESS реализуют перенос the same way.

Смежные вопросы