;;; BINOUT: 主プログラムから渡された1語の内容を、 ;;; ゼロ抑制を行った2進表記で出力する ;;; 八鍬幸信『基本情報処理試験 らくらく突破 CASL II』172ページ ;;; BINOUTを呼び出す MAIN START LAD GR2,0 MLOOP CPA GR2,MLEN JZE MFIN LD GR1,MWORD,GR2 CALL BINOUT LAD GR2,1,GR2 JUMP MLOOP MFIN RET MWORD DC #0000,#0001,#09CD,#8001 MLEN DC 4 END ;;; BINOUT 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