http://zxm.speccy.cz/data/Z80%20Bits.html#2.2
输入:HL =红利,C =除数,A = 0 输出:HL =商数,A =余数
add hl,hl ; unroll 16 times
rla ; ...
cp c ; ...
jr c,$+4 ; ...
sub c ; ...
inc l ; ...
当我试一试,并设置hl = $ 1200,a = 0,c = $ 91时,我在HL中得到0。不应该是$ 1f?
答案 0 :(得分:1)
它坏了。这是固定版本:
add hl,hl ; unroll 16 times
rla ; ...
jr c,$+5 ; important!
cp c ; ...
jr c,$+4 ; ...
sub c ; ...
inc l ; ...
如果您将$1200
移至A
注册,则会发现它永远不会超过$91
。但是一旦达到$90
,下一次比较就需要针对$120
而不是$20
。检查进位我添加了处理这种情况。
看起来该页面上的许多示例都有类似的问题。
顺便说一句,adc a,a
可以代替rla
使用,速度或大小没有变化,但清晰度大幅增加。很明显,AHL
被视为24位数字。