Joh*_*ski 6 assembly z80 gameboy
在Gameboy Z80上,LD HL,(SP+e)操作究竟如何影响H和C标志?(半携带+携带)
Fas*_*cia 13
我意识到这是一个老问题,但我前一段时间遇到了类似的问题,并且只想添加我的解决方案,因为绝对没有文档或开源模拟器能够正确地知道我的知识.给我一个真正的游戏男孩的实际调试找到解决方案.
对于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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2160 次 |
| 最近记录: |