+++ /dev/null
-;;; GR1に格納された値を、2進数値として表示
-OUTB START
- RPUSH
- LD GR2,BIN ; GR2に2進数の「2」を格納。
- XOR GR4,GR4 ; GR4: 2進数値の長さ
-STI CPL GR1,GR2 ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出
- JMI STLST ; ↓
- CALL DIVL ; GR1とGR2の、商をGR0、剰余をGR3に格納
- LD GR1,GR3 ; GR1にGR3をコピー
- LD GR1,NCHAR,GR1 ; GR1を文字に変換
- ST GR1,STR,GR4 ; (STR + GR4) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
- LD GR1,GR0 ; GR0をGR1にコピー
- JUMP STI ; ループ終端
-STLST LD GR1,NCHAR,GR1 ; GR1を文字に変換
- ST GR1,STR,GR4 ; (STR + GR4) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
-EMLOOP CPL GR4,DIG ; ループ先頭。(GR4 = DIG)の場合は、ループ脱出
- JZE PRT ; ↓
- LD GR1,NCHAR ; GR1 <- NCHAR:'0'
- ST GR1,STR,GR4 ; (STR + GR4) <- GR1
- LAD GR4,1,GR4 ; GR4 <- GR4 + 1
- JUMP EMLOOP ; ループ終端
-PRT ST GR4,LEN ; LEN <- GR4
- LD GR2,LEN ; GR2にLENの値を格納
- LAD GR1,STR ; GR1に文字列のアドレスを格納
- CALL REV ; 文字列を逆順に並べ替え
- OUT STR,LEN ; 文字列を出力
- RPOP
- RET
-STR DS 17
-LEN DS 1
-BIN DC 2
-NCHAR DC '01'
-SPC DC ' '
-DIG DC 16
- END