我在使用Z80汇编代码时遇到了一些问题,也许你可以帮我解决一下。代码如下:
aseg
org 3000h
start: ld A, (tops)
ld B, A
cycle: add A, B
djnz cycle
rst 38h
tops: db 3
end start
代码应该加上前n个整数,数字n将取自tops的内存区域。 谢谢你的帮助
答案 0 :(得分:2)
考虑到如果tops
处的字节为0,则循环实际运行256次,结果将溢出。实际上,结果将溢出任何等于或大于23的值。
该计划考虑了这两个问题。结果是16位HL寄存器。
ld a,(tops)
ld hl,0
ld d,0
or a
jr z,EndSum
ld e,a
Loop: add hl,de
dec e
jr nz,Loop
EndSum:
答案 1 :(得分:1)
当您输入cycle
循环时,A
和B
都包含3.因此您最终会得到结果3 + 3 + 2 + 1,即9。
如果你在进入循环之前添加一个LD A,0
,你应该得到3 + 2 + 1(6),我认为这是预期的结果。