root/as/misc/test/mull0/mull.casl

/* [<][>][^][v][top][bottom][index][help] */
   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

/* [<][>][^][v][top][bottom][index][help] */