From 27249cf1a80a7bf02449d38a35bdfe77daea40be Mon Sep 17 00:00:00 2001 From: j8takagi Date: Tue, 13 Nov 2012 10:45:42 +0900 Subject: [PATCH] =?utf8?q?=E6=96=87=E5=AD=97=E5=88=97=E3=80=8CFizzBuzz?= =?utf8?q?=E3=80=8D=E3=81=AE=E9=95=B7=E3=81=95=E5=8F=96=E5=BE=97=E6=96=B9?= =?utf8?q?=E6=B3=95=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- cnt/casl/fizzbuzz.casl | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/cnt/casl/fizzbuzz.casl b/cnt/casl/fizzbuzz.casl index 3e28fea..50e1ccd 100644 --- a/cnt/casl/fizzbuzz.casl +++ b/cnt/casl/fizzbuzz.casl @@ -1,43 +1,46 @@ MAIN START RPUSH + LD GR1,FIZLEN ; 文字列「FizzBuzz」の長さをFBLENへセット + ADDL GR1,BUZLEN ; ↓ + ST GR1,FBLEN ; ↓ LD GR1,MIN ; GR1:カウンター。初期値はMIN LD GR2,MIN ; GR2:Fizzカウンター。初期値はMIN LD GR3,MIN ; GR3:Buzzカウンター。初期値はMIN XOR GR4,GR4 ; GR4:FizzBuzzフラグ。初期値は0 -SETFIZ CPL GR2,FIZNUM ; GR2 = 3ではない場合、SETBUZへジャンプ +SETFIZ CPL GR2,FIZNUM ; GR2 = FIZNUM:3 ではない場合、SETBUZへジャンプ JNZ SETBUZ ; ↓ LAD GR2,0 ; GR2 <- 0 -SETBUZ CPL GR3,BUZNUM ; GR3 = 5ではない場合、PUTFBへジャンプ +SETBUZ CPL GR3,BUZNUM ; GR3 = BUZNUM:5 ではない場合、PUTFBへジャンプ JNZ PUTFB ; ↓ LAD GR3,0 ; GR3 <- 0 PUTFB LD GR4,GR2 ; GR4 <- GR2 or GR3 OR GR4,GR3 ; ↓ JNZ PUTFIZ ; GR4が0ではない場合、GR2とGR4のどちらかが0ではないので、PUTFIZへジャンプ OUT FIZZ,FBLEN ; 「FizzBuzz」を出力 - JUMP LOPEND ; LOPENDへジャンプ + JUMP LEND ; LENDへジャンプ PUTFIZ LD GR2,GR2 ; GR2が0ではない場合、PUTBUZへジャンプ JNZ PUTBUZ ; ↓ OUT FIZZ,FIZLEN ; 「Fizz」を出力 - JUMP LOPEND ; LOPENDへジャンプ + JUMP LEND ; LENDへジャンプ PUTBUZ LD GR3,GR3 ; GR3が0ではない場合、PUTNUMへジャンプ JNZ PUTNUM ; ↓ OUT BUZZ,BUZLEN ; 「Buzz」を出力 - JUMP LOPEND ; LOPENDへジャンプ + JUMP LEND ; LENDへジャンプ PUTNUM CALL OUTL ; GR1の数値を表示 -LOPEND CPL GR1,MAX ; GR1とMAXを比較 - JZE FIN ; GR1 = MAX の場合、FINへジャンプ +LEND CPL GR1,MAX ; GR1 = MAX の場合、FINへジャンプ + JZE FIN ; ↓ LAD GR1,1,GR1 ; GR1 <- GR1 + 1 LAD GR2,1,GR2 ; GR2 <- GR2 + 1 LAD GR3,1,GR3 ; GR3 <- GR3 + 1 JUMP SETFIZ ; SETFIZへジャンプ FIN RPOP RET -MIN DC 1 ; FIZZNUMとBUZNUMより小さい数値でなければならない -MAX DC 100 +MIN DC 1 ; 最小値。FIZNUMとBUZNUMより小さい数値でなければならない +MAX DC 100 ; 最大値。MIN以上65535以下 FIZNUM DC 3 BUZNUM DC 5 FIZZ DC 'Fizz' BUZZ DC 'Buzz' FIZLEN DC 4 BUZLEN DC 4 -FBLEN DC 8 +FBLEN DS 1 -- 2.18.0