+++ /dev/null
-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