GBZ80:LD HL,(SP + e)如何影响H和C标志?

在Gameboy Z80上,
LD HL,(SP+e)
操作究竟如何影响H和C标志? (半携带+携带) 参考:http://www.devrs.com/gb/files/opcodes.html     
已邀请:
我意识到这是一个老问题,但我前一段时间遇到了类似的问题,并且只想添加我的解决方案,因为绝对没有文档或开源模拟器可以正确地知道我的知识。给我一个真正的游戏男孩的实际调试找到解决方案。 对于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
    
如下所示:http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html SP + e的总和会影响Half Carry和Carry标志,所以你应该检查是否有从第3位到第4位的进位以及来自7到8(从0开始!)     

要回复问题请先登录注册