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