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