-;; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
-;; 例: 12345 -> 54321、54321- -> -12345
+;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える
+;;; 例: 12345 -> 54321、54321- -> -12345
+;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ
+;;; 出力 (同上)
REV START
RPUSH
LAD GR3,0 ; GR3の初期化
PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出
JZE NEXT ; ↓
- LD GR4,GR1 ; GR4にGR1の値をコピー
+ LD GR4,GR1 ; GR4 <- GR1
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
- LD GR5,0,GR4 ; GR5にアドレスGR4の値を格納
+ LD GR5,0,GR4 ; GR5 <- GR4アドレスの値
PUSH 0,GR5 ; GR5をプッシュ
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PU ; ループ終端
POP GR5 ; GR5にポップ
LD GR4,GR1 ; GR4にGR1の値をコピー
ADDL GR4,GR3 ; GR4 <- GR4 + GR3
- ST GR5,0,GR4 ; アドレスGR4にGR5の値を格納
+ ST GR5,0,GR4 ; GR4のアドレス <- GR5の値
LAD GR3,1,GR3 ; GR3 <- GR3 + 1
JUMP PO ; ループ終端
FIN RPOP