CASLアプリを格納するas/app、未整理のCASLファイルを格納するmiscを作成。casl2libのテストを追加
[YACASL2.git] / as / misc / test / mull0 / mull.casl
diff --git a/as/misc/test/mull0/mull.casl b/as/misc/test/mull0/mull.casl
new file mode 100644 (file)
index 0000000..b7d6997
--- /dev/null
@@ -0,0 +1,37 @@
+MAIN    START
+        LAD     GR3,0           ; Xのインデックス
+LOOPX   CPA     GR3,XCNT        ; (GR3 = XCNT)の場合、ループ脱出
+        JZE     FIN             ; ↓
+        LD      GR1,X,GR3       ; GR1に、(X+GR3)番地の値を転送
+        LAD     GR4,0           ; Yのインデックス
+LOOPY   CPA     GR4,YCNT        ; (GR4 = YCNT)の場合、ループ脱出
+        JZE     XNEXT           ; ↓
+        LD      GR2,Y,GR4       ; GR2に、(X+GR4)番地の値を転送
+        CALL    OUTL            ; GR1の数値を出力
+        PUSH    0,GR1           ; GR2の数値を出力
+        LD      GR1,GR2         ; ↓
+        CALL    OUTL            ; ↓
+        POP     GR1             ; ↓
+        CALL    MULL            ; GR0 <- GR1 * GR2
+        JOV     WOV             ; オーバーフローの場合は、WOVへジャンプ
+        PUSH    0,GR1           ; GR0の数値を出力
+        LD      GR1,GR0         ; ↓
+        CALL    OUTL            ; ↓
+        POP     GR1             ; ↓
+YNEXT   OUT     SEP,SLEN        ; 区切り線を出力
+        LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
+        JUMP    LOOPY           ; LOOPYへジャンプ
+WOV     OUT     YOMSG,YLEN      ; オーバーフローした場合のメッセージを表示
+        JUMP    YNEXT           ; YNEXTへジャンプ
+XNEXT   LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
+        JUMP    LOOPX           ; LOOPXへジャンプ
+FIN     RET
+X       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
+Y       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
+XCNT    DC      11
+YCNT    DC      11
+SEP     DC      '--------------------'
+SLEN    DC      20
+YOMSG   DC      'Warning: overflow'
+YLEN    DC      17
+        END