LD HL,(SP+e)
ゲームボーイZ80では、操作はHフラグとCフラグにどのように影響しますか?(ハーフキャリー+キャリー)
2832 次
2 に答える
16
これは古い質問だと思いますが、しばらく前に同様の問題が発生しました。私の知る限り、それを正しく実行するドキュメントやオープンソースエミュレータがまったくないため、ソリューションを追加したいと思います。解決策を見つけるために、実際のゲームボーイで実際のデバッグを行いました。
両方の16ビットSP+s8(署名付き即時)操作の場合:
7番目から8番目のビットにオーバーフローがある場合、キャリーフラグが設定されます。
3番目のビットから4番目のビットへのオーバーフローがある場合、ハーフキャリーフラグが設定されます。
正と負の両方の符号付き即時(Lua)の動作を別々に行う方が簡単であることがわかりました。
local D8 = self:Read(self.PC+1)
local S8 = ((D8&127)-(D8&128))
local SP = self.SP + S8
if S8 >= 0 then
self.Cf = ( (self.SP & 0xFF) + ( S8 ) ) > 0xFF
self.Hf = ( (self.SP & 0xF) + ( S8 & 0xF ) ) > 0xF
else
self.Cf = (SP & 0xFF) <= (self.SP & 0xFF)
self.Hf = (SP & 0xF) <= (self.SP & 0xF)
end
于 2011-08-31T17:47:20.837 に答える
1
ここに見られるように:http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html SP + eの合計は、ハーフキャリーとキャリーフラグに影響するため、ビット3から4へのキャリーがあるかどうかを確認する必要があります。 7から8(0から開始!)
于 2011-03-26T00:03:10.160 に答える