FOR ... NEXT 在 Z80 汇编上
Z80 有一个特定的指令来实现循环计数:DJNZ
standing 为“减量 B 寄存器,如果不为零则跳转”。因此,B 是在此处理器上实现循环的首选寄存器。FOR … NEXT 需要向后实现,因为寄存器倒计数到零。其他 CPU(如 8086,此 CPU 使用 CX 寄存器作为循环计数器)可能具有类似的特定循环计数器寄存器和指令,其他一些 CPU 允许具有任意寄存器的循环命令(m68k 具有适用于任何数据寄存器的 DBRA 指令)。
; Trivial multiplication (by repeated adding, ignores zero in factors, so
; not recommended for general use)
;
; inputs: A = Factor 1
; B = Factor 2
;
; output: A = Factor 1 * Factor 2
;
; Pseudo code
; C = A : A = 0 : FOR B = Factor 2 DOWNTO 0 : A = A + C : NEXT B
mul:
LD C,A ; Save Factor 1 in C register
XOR A ; Clear accumulator
mLoop:
ADD A,C ; Add Factor 1 to accumulator
DJNZ mLoop ; Do this Factor 2 times
RET ; return to caller