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 ; GR3 <- GR1 * GR2 JOV WOV ; オーバーフローの場合は、WOVへジャンプ PUSH 0,GR1 ; GR3の数値を出力 LD GR1,GR3 ; ↓ CALL OUTL ; ↓ POP GR1 ; ↓ YNEXT OUT SEP,SLEN ; 区切り線を出力 LAD GR5,1,GR5 ; GR5 <- GR5 + 1 JUMP LOOPY ; LOOPYへジャンプ WOV OUT YOMSG,YLEN ; オーバーフローした場合のメッセージを表示 OUT SEP,SLEN ; 区切り線を出力 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