FOR ... NEXT 在 Z80 汇编上

Z80 有一个特定的指令来实现循环计数:DJNZstanding 为“减量 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