b7d69971f359887eebc477c984eeb86e2aee9af3
[YACASL2.git] / test / system / casl2 / lib_mull / mull.casl
1 MAIN    START
2         LAD     GR3,0           ; Xのインデックス
3 LOOPX   CPA     GR3,XCNT        ; (GR3 = XCNT)の場合、ループ脱出
4         JZE     FIN             ; ↓
5         LD      GR1,X,GR3       ; GR1に、(X+GR3)番地の値を転送
6         LAD     GR4,0           ; Yのインデックス
7 LOOPY   CPA     GR4,YCNT        ; (GR4 = YCNT)の場合、ループ脱出
8         JZE     XNEXT           ; ↓
9         LD      GR2,Y,GR4       ; GR2に、(X+GR4)番地の値を転送
10         CALL    OUTL            ; GR1の数値を出力
11         PUSH    0,GR1           ; GR2の数値を出力
12         LD      GR1,GR2         ; ↓
13         CALL    OUTL            ; ↓
14         POP     GR1             ; ↓
15         CALL    MULL            ; GR0 <- GR1 * GR2
16         JOV     WOV             ; オーバーフローの場合は、WOVへジャンプ
17         PUSH    0,GR1           ; GR0の数値を出力
18         LD      GR1,GR0         ; ↓
19         CALL    OUTL            ; ↓
20         POP     GR1             ; ↓
21 YNEXT   OUT     SEP,SLEN        ; 区切り線を出力
22         LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
23         JUMP    LOOPY           ; LOOPYへジャンプ
24 WOV     OUT     YOMSG,YLEN      ; オーバーフローした場合のメッセージを表示
25         JUMP    YNEXT           ; YNEXTへジャンプ
26 XNEXT   LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
27         JUMP    LOOPX           ; LOOPXへジャンプ
28 FIN     RET
29 X       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
30 Y       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
31 XCNT    DC      11
32 YCNT    DC      11
33 SEP     DC      '--------------------'
34 SLEN    DC      20
35 YOMSG   DC      'Warning: overflow'
36 YLEN    DC      17
37         END