MAIN START LD GR1,=#09CD CALL BITOUT ;副プログラムの呼び出し RET BITOUT START ;ゼロ抑制 [a10.cas] RPUSH ;汎用レジスタの退避 LAD GR2,0 ;出力ポインタの初期化 LAD GR3,15 ;カウンタの初期化 CPA GR1,=0 ;ゼロ? JZE OUT1 LOOP1 SLL GR1,1 ;1ビット論理シフト [ a ] JOV ONE SUBA GR3,=1 ;先行するビット0の処理 JUMP LOOP1 LOOP2 JOV ONE LD GR4,='0' ;'0' → GR4 JUMP STORE ONE LD GR4,='1' ;'1'→GR4 [ b ] STORE ST GR4,BUF,GR2 ;1文字格納 LAD GR2,1,GR2 SUBA GR3,=1 JMI OUT2 ;全ビット終了? SLL GR1,1 ;1ビット論理シフト JUMP LOOP2 OUT1 LD GR4,='0' ;'0' → GR4 ST GR4,BUF,GR2 ;1文字格納 LAD GR2,1,GR2 OUT2 ST GR2,LEN ;出力文字長の格納 [ c ] OUT BUF,LEN ;出力 RPOP ;汎用レジスタの復元 RET BUF DS 16 LEN DS 1 END