汇编程序错误的代码

时间:2013-11-13 02:45:55

标签: assembly z80

我在使用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的内存区域。 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

考虑到如果tops处的字节为0,则循环实际运行2​​56次,结果将溢出。实际上,结果将溢出任何等于或大于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循环时,AB都包含3.因此您最终会得到结果3 + 3 + 2 + 1,即9。

如果你在进入循环之前添加一个LD A,0,你应该得到3 + 2 + 1(6),我认为这是预期的结果。