PREVRS START RPUSH LD GR4,0,GR1 ; ビット列を保存 CALL REVRS ; ビット列のビットの並びを逆転 LD GR5,0,GR1 ; GR5 ← 逆転したビット列 LD GR6,=16 SUBA GR6,GR3 ; GR6 ← 16 - q SRL GR5,0,GR2 ; 逆転した部分ビット列αを右端に移動 SLL GR5,0,GR6 ; 逆転した部分ビット列αを左端に移動 SRL GR5,0,GR2 ; 逆転した部分ビット列αを p ビットに移動 LD GR6,=#8000 SRA GR6,-1,GR3 ; q ビット連続した1の並びを作成 SRL GR6,0,GR2 XOR GR6,=#FFFF AND GR6,GR4 ; 元のビット列中の部分ビット列αにゼロを設定 OR GR6,GR5 ST GR6,0,GR1 RPOP RET END