LREVRS START RPUSH LD GR3,GR1 LD GR4,GR2 SUBA GR4,=1 JZE LOOP2 ADDA GR4,GR1 LOOP1 LD GR5,0,GR3 ; LD GR6,0,GR4 ; GR3 が指す語と GR4 が指す語の内容を ST GR5,0,GR4 ; 入れ替える ST GR6,0,GR3 ; LAD GR3,1,GR3 ; GR3 を次の語に位置付ける LAD GR4,-1,GR4 ; GR4 を一つ前の語に位置付ける CPA GR3,GR4 JMI LOOP1 LOOP2 CALL REVRS LAD GR1,1,GR1 SUBA GR2,=1 JNZ LOOP2 FIN3 RPOP RET END REVRS START RPUSH LD GR4,=0 ; 結果のビット列を初期化 LAD GR2,15 ; ループカウンタ LD GR3,0,GR1 ; GR3 ← ビット列 LOOP SLL GR4,1 ; 結果のビット列を左シフト SRL GR3,1 ; 元のビット列を右シフト JOV ON JZE FIN1 ; 元のビット列の残りのビットはすべてゼロ JUMP OFF ON OR GR4,=#0001 OFF SUBA GR2,=1 JMI FIN2 ; 16 ビット処理済み JUMP LOOP FIN1 SLL GR4,0,GR2 ; 結果のビット列を残りのビット数だけシフト FIN2 ST GR4,0,GR1 RPOP RET END