这是从 rosettacode.com 获取的斐波那契序列的代码
FIBNCI: MOV C, A ; C will store the counter
DCR C ; decrement, because we know f(1) already
MVI A, 1
MVI B, 0
LOOP: MOV D, A
ADD B ; A := A + B
MOV B, D
DCR C
JNZ LOOP ; jump if not zero
RET ; return from subroutine
如果取自 A 的值原本为 0,我们将 C 递减,C 会变成 -1 吗?如果是这样,在第 2 次 DCR 时该值会发生什么变化;JNZ 指令看到或做什么?
这是我第一次接触汇编语言,所以现在有点困惑。我在想,如果 C 已经是 -1 并且在我们到达 JNZ 指令时计数,那么这段代码不会陷入循环吗?还是 JNZ 正在寻找其他地方?