--- /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