startにオペランドを指定した場合、そのアドレスに書き込む
[YACASL2.git] / test / system / casl2_cmd / cmd_start_opd / sum_10.casl
diff --git a/test/system/casl2_cmd/cmd_start_opd/sum_10.casl b/test/system/casl2_cmd/cmd_start_opd/sum_10.casl
new file mode 100644 (file)
index 0000000..d8eb9f0
--- /dev/null
@@ -0,0 +1,21 @@
+;;; sum_10.casl
+;;; 1から10までの整数をすべて加算した値をメモリーに格納する
+MAIN    START   #20
+        PUSH    0,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     ST      GR2,RST         ; GR2の結果をメモリーに転送
+        POP     GR2
+        POP     GR1
+        RET
+FST     DC      1               ; 初項
+LST     DC      10              ; 末項
+STEP    DC      1               ; 公差
+RST     DS      1               ; 結果
+        END