-;;; BINOUT: 主プログラムから渡された1語の内容を、
-;;; ゼロ抑制を行った2進表記で出力する
-;;; 八鍬幸信『基本情報処理試験 らくらく突破 CASL II』172ページ
-BINOUT START
- PUSH 0,GR1 ; レジスタの退避
- PUSH 0,GR2 ; ↓
- PUSH 0,GR3 ; ↓
- PUSH 0,GR4 ; ↓
- LAD GR2,0 ; 出力ポインタの初期化
- LAD GR3,15 ; カウンタの初期化
- LD GR4,GR1 ; 全ビット = 0?
- JZE OUT1
-LOOP1 JMI ONE ; 先行するビット処理
- LAD GR3,-1,GR3 ; ↓
- SLL GR1,1 ; ↓
- JUMP LOOP1
-LOOP2 JMI ONE ; 符号ビットの判定
-ZERO LAD GR0,48 ; '0'→GR0
- JUMP STORE
-ONE LAD GR0,49 ; '1'→GR1
-STORE ST GR0,OBUF,GR2
- LAD GR2,1,GR2
- LAD GR3,-1,GR3
- CPA GR3,NZERO
- JMI OUT2 ; 全ビット終了?
- SLL GR1,1
- JUMP LOOP2
-OUT1 LAD GR0,48
- ST GR0,OBUF,GR2
- LAD GR2,1,GR2
-OUT2 ST GR2,OLNG
- OUT OBUF,OLNG
- POP GR4 ; レジスタの復元
- POP GR3 ; ↓
- POP GR2 ; ↓
- POP GR1 ; ↓
- RET
-OBUF DS 16
-OLNG DS 1
-NZERO DC 0
- END