+OUTI START
+ PUSH 0,GR2
+ PUSH 0,GR3
+ PUSH 0,GR4
+ LAD GR0,0 ; 負数フラグ。GR1が負数の場合、GR0は1
+ LAD GR2,0
+ AND GR1,GR1
+ JZE INEXT ; GR1が0の場合
+ JPL ILOOP ; GR1が正数の場合
+ LAD GR0,1 ; GR1が負数の場合、負数フラグ設定
+ CALL INV ; 負数を正数に変換
+ILOOP CPL GR1,TEN
+ JMI INEXT ; GR1が10未満の場合は、ループ終了
+ CALL DIV10 ; (GR1 / 10)の商をGR3、剰余をGR4に格納
+ ADDL GR4,ZCHAR ; (GR1 / 10)の剰余を文字に変換
+ ST GR4,STR,GR2 ; 文字をメモリに格納
+ LAD GR2,1,GR2 ; GR2をインクリメント
+ LD GR1,GR3 ; (GR1 / 10)の商をGR1に格納
+ JUMP ILOOP
+INEXT ADDL GR1,ZCHAR ; ループ終了後の剰余を文字に変換
+ ST GR1,STR,GR2 ; 文字をメモリに格納
+ LAD GR2,1,GR2 ; GR2をインクリメント
+ CPL GR0,=1 ; 負数フラグ判定
+ JNZ PRT
+ LD GR1,='-' ; 負数フラグがオンの場合、「-」をロード
+ ST GR1,STR,GR2 ; 「-」をメモリに格納
+ LAD GR2,1,GR2 ; GR2をインクリメント
+PRT ST GR2,LEN ; GR2をメモリに格納
+ LAD GR1,STR ; GR1に文字列のアドレスを格納
+ CALL REV ; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
+ OUT STR,LEN ; 文字列を印字
+ POP GR4
+ POP GR3
+ POP GR2
+ RET
+TEN DC 10
+ZCHAR DC '0'
+STR DS 6
+LEN DS 1
+ END