REI5A START
LAD GR1,0 ;カウンタを0にする
LD GR0,A ; Aの値をGR0に入れる
JMI FUSUU ;負数か判断
LD GR3,=' ' ;正のときはスペース
ST GR3,BUFF,GR1 ;文字を保存
JUMP KEISAN ;数値処理にジャンプ
FUSUU LD GR3,='-' ;負数のときはマイナス
ST GR3,BUFF,GR1 ;文字を保存
LAD GR0,0 ;絶対値処理
SUBA GR0,A ;絶対値処理
KEISAN LAD GR1,1,GR1 ;カウンタインクリメント
LD GR2,WORK,GR1 ;除数をGR2に読み込み
CALL DIV ;わり算処理へ
PUSH 0,GR3 ; GR3を一時待避
OR GR3,WORK ;文字コードの判別
ST GR3,WORK ;結果をWORKに
POP GR3 ; GR3を復帰
JZE SPACE ; ORの結果が0のとき分岐
OR GR3,MOJI ; #0030を加算
JUMP HOZON ;文字コード保存処理へ
SPACE LD GR3,=' ' ; ORが0のときスペース
HOZON ST GR3,BUFF,GR1 ;文字コードを保存
CPA GR1,C4 ;ループ回数の比較
JMI KEISAN ; 4回ループする
OR GR0,MOJI ; 1の位を文字コードに
LAD GR1,1,GR1 ;カウンタインクリメント
ST GR0,BUFF,GR1 ;文字コードの保存
OUT BUFF,LEN ;結果の表示
RET
A DC -2050
BUFF DS 6 ;文字コード保存領域
LEN DC 6 ;文字コードの長さ
WORK DC 0,10000,1000,100,10
MOJI DC #0030
C4 DC 4
END
DIV START
LAD GR3,0 ;商を0にする
DLOOP CPA GR0,GR2 ;除数で引けるか判別
JMI FIN ;引けないときはFINへ
SUBA GR0,GR2 ;被除数−除数
LAD GR3,1,GR3 ;商をインクリメント
JUMP DLOOP ;繰り返し処理
FIN RET
END