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: 文字列「Fizz」の長さおよびフラグ
22 XOR GR5,GR5 ; GR5: 文字列「Buzz」の長さおよびフラグ
23 XOR GR6,GR6 ; GR6: 文字列「FizzBuzz」のフラグ
24 GETFIZ LD GR2,FIZNUM ; GR2にFIZNUM=3を代入
25 CALL DIVL ; GR3 <- GR1 % 3(= GR2)
26 LD GR3,GR3 ; GR3のフラグ値を取得
27 JNZ GETBUZ ; GR3が0でない場合、FIZNUMの倍数ではないので、GETBUZへジャンプ
28 LD GR4,FIZLEN ; GR4に文字列「Fizz」の長さFIZLEN=4を代入
29 GETBUZ LD GR2,BUZNUM ; GR2にBUZNUM=5を代入
30 CALL DIVL ; GR3 <- GR1 % 5(= GR2)
31 LD GR3,GR3 ; GR3のフラグ値を取得
32 JNZ PUTS ; GR3が0でない場合、BIZNUMの倍数ではないので、PUTSへジャンプ
33 LD GR5,BUZLEN ; GR4のフラグ値を取得
34 PUTS LD GR6,GR4 ; GR6 <- GR4
35 AND GR6,GR5 ; GR6 <- GR6 and GR4
36 JZE CHKFIZ ; GR6が0の場合、GR4かGR5のどちらかが0なので、CHKFIZへジャンプ
37 ADDL GR4,GR5 ; GR4 <- GR4 + GR5
38 JUMP PUTFIZ ; 「FizzBuzz」を出力するため、PUTFIZへジャンプ
39 CHKFIZ LD GR4,GR4 ; GR4のフラグ値を取得
40 JZE CHKBUZ ; GR4が0の場合、CHKBUZへジャンプ
41 PUTFIZ ST GR4,LEN ; LEN <- GR4
42 OUT FIZZ,LEN ;「Fizz」または「FizzBuzz」を出力
44 CHKBUZ LD GR5,GR5 ; GR5のフラグ値を取得
45 JZE PUTNUM ; GR5が0の場合、PUTNUMへジャンプ
46 PUTBUZ ST GR5,LEN ; LEN <- GR4
47 OUT BUZZ,LEN ;「Buzz」を出力
49 PUTNUM CALL OUTL ; GR1の数値を表示