casl2lib無視ファイルの設定ミスを修正
[YACASL2.git] / as / casl2lib / sample / call_mull.casl
diff --git a/as/casl2lib/sample/call_mull.casl b/as/casl2lib/sample/call_mull.casl
new file mode 100644 (file)
index 0000000..6085ce1
--- /dev/null
@@ -0,0 +1,45 @@
+MAIN    START
+        LAD     GR4,0           ; Xのインデックス
+LOOPX   CPA     GR4,XCNT        ; (GR4 = XCNT)の場合、ループ脱出
+        JZE     FIN             ; ↓
+        LD      GR1,X,GR4       ; GR1に、(X+GR4)番地の値を転送
+        LAD     GR5,0           ; Yのインデックス
+LOOPY   CPA     GR5,YCNT        ; (GR5 = YCNT)の場合、ループ脱出
+        JZE     XNEXT           ; ↓
+        LD      GR2,Y,GR5       ; GR2に、(X+GR5)番地の値を転送
+        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     GR5,1,GR5       ; GR5 <- GR5 + 1
+        JUMP    LOOPY           ; LOOPYへジャンプ
+WOV     OUT     YOMSG,YLEN      ; オーバーフローした場合のメッセージを表示
+        PUSH    0,GR1           ; GR0の数値を出力
+        LD      GR1,GR0         ; ↓
+        CALL    OUTL            ; ↓
+        POP     GR1             ; ↓
+        PUSH    0,GR1           ; GR3の数値を出力
+        LD      GR1,GR3         ; ↓
+        CALL    OUTL            ; ↓
+        POP     GR3             ; ↓
+        JUMP    YNEXT           ; YNEXTへジャンプ
+XNEXT   LAD     GR4,1,GR4       ; GR4 <- GR4 + 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      'overflow'
+YLEN    DC      8
+        END