projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
バージョンアップ
[YACASL2.git]
/
as
/
sample
/
sum_10.casl
diff --git
a/as/sample/sum_10.casl
b/as/sample/sum_10.casl
index
d691a10
..
cc88df1
100644
(file)
--- a/
as/sample/sum_10.casl
+++ b/
as/sample/sum_10.casl
@@
-1,17
+1,21
@@
;;; sum_10.casl
;;; sum_10.casl
-;;;
出力 GR0: 1から10までの整数をすべて加算した値
+;;;
1から10までの整数をすべて加算した値をメモリーに格納する
MAIN START
PUSH 0,GR1
MAIN START
PUSH 0,GR1
- LAD GR0,0 ; GR0を初期化
- LD GR1,FST ; GR1に初項を転送
-LOOP ADDL GR0,GR1 ; ループ先頭
+ PUSH 0,GR2
+ XOR GR2,GR2 ; GR2を初期化
+ LD GR1,FST ; GR1に初項をメモリーから転送
+LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1
ADDL GR1,STEP ; GR1 <- GR1 + 公差
CPL GR1,LST ; GR1が末項より大きい場合は終了
JPL FIN ; ↓
JUMP LOOP ; ループ終端
ADDL GR1,STEP ; GR1 <- GR1 + 公差
CPL GR1,LST ; GR1が末項より大きい場合は終了
JPL FIN ; ↓
JUMP LOOP ; ループ終端
-FIN POP GR1
+FIN ST GR2,RST ; GR2の結果をメモリーに転送
+ POP GR2
+ POP GR1
RET
FST DC 1 ; 初項
LST DC 10 ; 末項
STEP DC 1 ; 公差
RET
FST DC 1 ; 初項
LST DC 10 ; 末項
STEP DC 1 ; 公差
+RST DS 1 ; 結果
END
END