projects
/
fizzbuzz.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
32fb0c3
)
文字列「FizzBuzz」の長さ取得方法を変更
master
author
j8takagi
<j8takagi@nifty.com>
Tue, 13 Nov 2012 01:45:42 +0000
(10:45 +0900)
committer
j8takagi
<j8takagi@nifty.com>
Tue, 13 Nov 2012 01:49:38 +0000
(10:49 +0900)
cnt/casl/fizzbuzz.casl
patch
|
blob
|
history
diff --git
a/cnt/casl/fizzbuzz.casl
b/cnt/casl/fizzbuzz.casl
index
3e28fea
..
50e1ccd
100644
(file)
--- a/
cnt/casl/fizzbuzz.casl
+++ b/
cnt/casl/fizzbuzz.casl
@@
-1,43
+1,46
@@
MAIN START
RPUSH
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
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
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」を出力
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 L
OPEND ; LOP
ENDへジャンプ
+ JUMP L
END ; L
ENDへジャンプ
PUTFIZ LD GR2,GR2 ; GR2が0ではない場合、PUTBUZへジャンプ
JNZ PUTBUZ ; ↓
OUT FIZZ,FIZLEN ; 「Fizz」を出力
PUTFIZ LD GR2,GR2 ; GR2が0ではない場合、PUTBUZへジャンプ
JNZ PUTBUZ ; ↓
OUT FIZZ,FIZLEN ; 「Fizz」を出力
- JUMP L
OPEND ; LOP
ENDへジャンプ
+ JUMP L
END ; L
ENDへジャンプ
PUTBUZ LD GR3,GR3 ; GR3が0ではない場合、PUTNUMへジャンプ
JNZ PUTNUM ; ↓
OUT BUZZ,BUZLEN ; 「Buzz」を出力
PUTBUZ LD GR3,GR3 ; GR3が0ではない場合、PUTNUMへジャンプ
JNZ PUTNUM ; ↓
OUT BUZZ,BUZLEN ; 「Buzz」を出力
- JUMP L
OPEND ; LOP
ENDへジャンプ
+ JUMP L
END ; L
ENDへジャンプ
PUTNUM CALL OUTL ; GR1の数値を表示
PUTNUM CALL OUTL ; GR1の数値を表示
-L
OPEND CPL GR1,MAX ; GR1とMAXを比較
- JZE FIN ;
GR1 = MAX の場合、FINへジャンプ
+L
END 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
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 ;
FIZ
ZNUMとBUZNUMより小さい数値でなければならない
-MAX DC 100
+MIN DC 1 ;
最小値。FI
ZNUMとBUZNUMより小さい数値でなければならない
+MAX DC 100
; 最大値。MIN以上65535以下
FIZNUM DC 3
BUZNUM DC 5
FIZZ DC 'Fizz'
BUZZ DC 'Buzz'
FIZLEN DC 4
BUZLEN DC 4
FIZNUM DC 3
BUZNUM DC 5
FIZZ DC 'Fizz'
BUZZ DC 'Buzz'
FIZLEN DC 4
BUZLEN DC 4
-FBLEN D
C 8
+FBLEN D
S 1