1

我需要在 z80 硬件上的 Assembly 中编写三个嵌套循环。第一个循环(最内部的循环)应该迭代 70 次,另外两个 100 次。

这是我想出的代码,但似乎无法正常工作;它迭代直到产生中断(我认为是堆栈溢出错误)。

loop1:
ld a, 46h
   loop2:
   ld b, 64h
      loop3:
      ld c, 64h
      dec c
      jnz c, (loop3)
   dec b
   jnz b, (loop2)
dec a
jnz a, (loop1)
halt

C ++中的类似代码是

for(int b = 100; c>0; c--)
   for(int c = 100; b>0; b--)
      for(int a = 70; a>0; a--)
       ...
4

2 回答 2

3

这是初始化循环的方式:

ld a, 46
loop1:
   ld b, 64
   loop2:
      ld c, 64
      loop3:
      dec c
      jnz c, loop3
   dec b
   jnz b, loop2
dec a
jnz a, loop1
halt
于 2015-12-21T20:29:27.753 回答
3

考虑使用djnz循环命令:

   ld b,46
loop1:
   push bc
   ld b,64
loop2:
   push bc
   ...
   pop bc
   djnz loop2
   pop bc
   djnz loop1
于 2015-12-23T08:41:21.853 回答