;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
+;;; 1から10までの整数をすべて加算した値をメモリーに格納する
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 ; ループ終端
-FIN POP GR1
+FIN ST GR2,RST ; GR2の結果をメモリーに転送
+ POP GR2
+ POP GR1
RET
FST DC 1 ; 初項
LST DC 10 ; 末項
STEP DC 1 ; 公差
+RST DS 1 ; 結果
END
Assemble ../../../../as/sample/sum_10.casl (0)
../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する
../../../../as/sample/sum_10.casl: 3:MAIN START
../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
-../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
-../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
-../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
-../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
-../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
-../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
-../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
-../../../../as/sample/sum_10.casl: 12:FIN POP GR1
-../../../../as/sample/sum_10.casl: 13: RET
-../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
-../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
-../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
-../../../../as/sample/sum_10.casl: 17: END
+../../../../as/sample/sum_10.casl: 5: PUSH 0,GR2
+../../../../as/sample/sum_10.casl: 6: XOR GR2,GR2 ; GR2を初期化
+../../../../as/sample/sum_10.casl: 7: LD GR1,FST ; GR1に初項をメモリーから転送
+../../../../as/sample/sum_10.casl: 8:LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1
+../../../../as/sample/sum_10.casl: 9: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl: 10: CPL GR1,LST ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl: 11: JPL FIN ; ↓
+../../../../as/sample/sum_10.casl: 12: JUMP LOOP ; ループ終端
+../../../../as/sample/sum_10.casl: 13:FIN ST GR2,RST ; GR2の結果をメモリーに転送
+../../../../as/sample/sum_10.casl: 14: POP GR2
+../../../../as/sample/sum_10.casl: 15: POP GR1
+../../../../as/sample/sum_10.casl: 16: RET
+../../../../as/sample/sum_10.casl: 17:FST DC 1 ; 初項
+../../../../as/sample/sum_10.casl: 18:LST DC 10 ; 末項
+../../../../as/sample/sum_10.casl: 19:STEP DC 1 ; 公差
+../../../../as/sample/sum_10.casl: 20:RST DS 1 ; 結果
+../../../../as/sample/sum_10.casl: 21: END
Label::::
MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
+MAIN.LOOP ---> #0007
+MAIN.FIN ---> #0010
+MAIN.FST ---> #0015
+MAIN.LST ---> #0016
+MAIN.STEP ---> #0017
+MAIN.RST ---> #0018
Assemble ../../../../as/sample/sum_10.casl (1)
../../../../as/sample/sum_10.casl: 1:;;; sum_10.casl
-../../../../as/sample/sum_10.casl: 2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl: 2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する
../../../../as/sample/sum_10.casl: 3:MAIN START
../../../../as/sample/sum_10.casl: 4: PUSH 0,GR1
#0000 #7001
#0001 #0000
-../../../../as/sample/sum_10.casl: 5: LAD GR0,0 ; GR0を初期化
- #0002 #1200
+../../../../as/sample/sum_10.casl: 5: PUSH 0,GR2
+ #0002 #7002
#0003 #0000
-../../../../as/sample/sum_10.casl: 6: LD GR1,FST ; GR1に初項を転送
- #0004 #1010
- #0005 #0011
-../../../../as/sample/sum_10.casl: 7:LOOP ADDL GR0,GR1 ; ループ先頭
- #0006 #2601
-../../../../as/sample/sum_10.casl: 8: ADDL GR1,STEP ; GR1 <- GR1 + 公差
- #0007 #2210
- #0008 #0013
-../../../../as/sample/sum_10.casl: 9: CPL GR1,LST ; GR1が末項より大きい場合は終了
- #0009 #4110
- #000A #0012
-../../../../as/sample/sum_10.casl: 10: JPL FIN ; ↓
- #000B #6500
- #000C #000F
-../../../../as/sample/sum_10.casl: 11: JUMP LOOP ; ループ終端
- #000D #6400
- #000E #0006
-../../../../as/sample/sum_10.casl: 12:FIN POP GR1
- #000F #7110
-../../../../as/sample/sum_10.casl: 13: RET
- #0010 #8100
-../../../../as/sample/sum_10.casl: 14:FST DC 1 ; 初項
- #0011 #0001
-../../../../as/sample/sum_10.casl: 15:LST DC 10 ; 末項
- #0012 #000A
-../../../../as/sample/sum_10.casl: 16:STEP DC 1 ; 公差
- #0013 #0001
-../../../../as/sample/sum_10.casl: 17: END
+../../../../as/sample/sum_10.casl: 6: XOR GR2,GR2 ; GR2を初期化
+ #0004 #3622
+../../../../as/sample/sum_10.casl: 7: LD GR1,FST ; GR1に初項をメモリーから転送
+ #0005 #1010
+ #0006 #0015
+../../../../as/sample/sum_10.casl: 8:LOOP ADDL GR2,GR1 ; ループ先頭。GR2 <- GR2 + GR1
+ #0007 #2621
+../../../../as/sample/sum_10.casl: 9: ADDL GR1,STEP ; GR1 <- GR1 + 公差
+ #0008 #2210
+ #0009 #0017
+../../../../as/sample/sum_10.casl: 10: CPL GR1,LST ; GR1が末項より大きい場合は終了
+ #000A #4110
+ #000B #0016
+../../../../as/sample/sum_10.casl: 11: JPL FIN ; ↓
+ #000C #6500
+ #000D #0010
+../../../../as/sample/sum_10.casl: 12: JUMP LOOP ; ループ終端
+ #000E #6400
+ #000F #0007
+../../../../as/sample/sum_10.casl: 13:FIN ST GR2,RST ; GR2の結果をメモリーに転送
+ #0010 #1120
+ #0011 #0018
+../../../../as/sample/sum_10.casl: 14: POP GR2
+ #0012 #7120
+../../../../as/sample/sum_10.casl: 15: POP GR1
+ #0013 #7110
+../../../../as/sample/sum_10.casl: 16: RET
+ #0014 #8100
+../../../../as/sample/sum_10.casl: 17:FST DC 1 ; 初項
+ #0015 #0001
+../../../../as/sample/sum_10.casl: 18:LST DC 10 ; 末項
+ #0016 #000A
+../../../../as/sample/sum_10.casl: 19:STEP DC 1 ; 公差
+ #0017 #0001
+../../../../as/sample/sum_10.casl: 20:RST DS 1 ; 結果
+ #0018 #0000
+../../../../as/sample/sum_10.casl: 21: END