CASL2コードで、ローカル以外のラベルを使わないように修正
[YACASL2.git] / as / FUNC / mull_call.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         OUT     SEP,SLEN        ; 区切り線を出力
11         CALL    OUTL            ; GR1の数値を出力
12         PUSH    0,GR1           ; GR2の数値を出力
13         LD      GR1,GR2         ; ↓
14         CALL    OUTL            ; ↓
15         POP     GR1             ; ↓
16         CALL    MULL            ; GR0 <- GR1 * GR2
17         JOV     WOV             ; オーバーフローの場合は、WOVへジャンプ
18         PUSH    0,GR1           ; GR0の数値を出力 
19         LD      GR1,GR0         ; ↓
20         CALL    OUTL            ; ↓
21         POP     GR1             ; ↓
22 YNEXT   OUT     SEP,SLEN        ; 区切り線を出力
23         LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
24         JUMP    LOOPY           ; LOOPYへジャンプ
25 WOV     OUT     YOMSG,YLEN      ; オーバーフローした場合のメッセージを表示
26         JUMP    YNEXT           ; YNEXTへジャンプ
27 XNEXT   LAD     GR3,1,GR3       ; GR3 <- GR3 + 1
28         JUMP    LOOPX           ; LOOPXへジャンプ
29 FIN     RET
30 X       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
31 Y       DC      0,1,2,127,128,255,256,257,32767,#8000,#FFFF
32 XCNT    DC      11
33 YCNT    DC      11
34 SEP     DC      '--------------------'
35 SLEN    DC      20
36 YOMSG   DC      'Warning: overflow'
37 YLEN    DC      17
38         END