--- /dev/null
+MAIN START
+ LAD GR3,0 ; Xのインデックス
+LOOPX CPA GR3,XCNT ; (GR3 = XCNT)の場合、ループ脱出
+ JZE FIN ; ↓
+ LD GR1,X,GR3 ; GR1に、(X+GR3)番地の値を転送
+ LAD GR4,0 ; Yのインデックス
+LOOPY CPA GR4,YCNT ; (GR4 = YCNT)の場合、ループ脱出
+ JZE XNEXT ; ↓
+ LD GR2,Y,GR4 ; GR2に、(X+GR4)番地の値を転送
+ 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 GR4,1,GR4 ; GR4 <- GR4 + 1
+ JUMP LOOPY ; LOOPYへジャンプ
+WOV OUT YOMSG,YLEN ; オーバーフローした場合のメッセージを表示
+ JUMP YNEXT ; YNEXTへジャンプ
+XNEXT LAD GR3,1,GR3 ; GR3 <- GR3 + 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 'Warning: overflow'
+YLEN DC 17
+ END