as/sample/sum_10.caslを変更
[YACASL2.git] / as / sample / sum_10.casl
index d691a10..cc88df1 100644 (file)
@@ -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