3 LD GR1,MIN ; GR1にMINを代入
4 LOOP CALL FIZBUZ ; FIZBUZを呼び出す
5 LAD GR1,1,GR1 ; GR1 <- GR1 + 1
6 CPL GR1,MAX ; GR1とMAXを比較
7 JPL FIN ; GR1 > MAX の場合、FINへジャンプ
17 ;; 3の倍数かつ5の倍数: FizzBuzz
21 XOR GR4,GR4 ; GR4: 文字列の長さおよびフラグ
22 CHKFIZ LAD GR2,3 ; GR2に3を代入
23 CALL DIVL ; GR3 <- GR1 % GR2:3
24 LD GR3,GR3 ; GR3のフラグ値を取得
25 JNZ CHKBUZ ; GR3が0でない場合、3の倍数ではないので、CHKBUZへジャンプ
26 SETFIZ LAD GR4,4 ; GR4に文字列「Fizz」の長さ4を代入
27 CHKBUZ LAD GR2,5 ; GR2に5を代入
28 CALL DIVL ; GR3 <- GR1 % GR2:5
29 LD GR3,GR3 ; GR3のフラグ値を取得
30 JZE SETBUZ ; GR3が0の場合、5の倍数なので、SETBUZへジャンプ
31 LD GR4,GR4 ; GR4のフラグ値を取得
32 JZE PUTNUM ; GR4が0の場合、3の倍数でも5の倍数でもないので、PUTNUMへジャンプ
33 JUMP SETLEN ; SETLENへジャンプ(3の倍数で5の倍数ではない)
34 SETBUZ LD GR4,GR4 ; GR4のフラグ値を取得
35 LAD GR4,4,GR4 ; GR4に文字列「Buzz」の長さ4を追加
36 SETLEN ST GR4,LEN ; LENにGR4の値を出力
37 CHKFB JZE PUTBUZ ; GR4が0の場合、3の倍数ではないので、PUTBUZへジャンプ
38 PUTFIZ OUT FIZZ,LEN ; 「Fizz」または「FizzBuzz」を出力
40 PUTBUZ OUT BUZZ,LEN ; 「Buzz」を出力
42 PUTNUM CALL OUTA ; GR1の数値を表示