Skip to content

Instantly share code, notes, and snippets.

@maehrm
Created November 18, 2018 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maehrm/ef9b64c22b6e83f5c2cb60034a60057f to your computer and use it in GitHub Desktop.
Save maehrm/ef9b64c22b6e83f5c2cb60034a60057f to your computer and use it in GitHub Desktop.
平成22年度秋期基本情報午後問12_設問2
Q122 START
LAD GR1,ARY
LD GR2,N
CALL LREVRS
RET
ARY DC #B3D1,#8000,#0001
N DC 3 ; ARYの3語の入れ替え
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
LREVRS START
RPUSH
LD GR3,GR1
LD GR4,GR2
SUBA GR4,=1
JZE LOOP2
ADDA GR4,GR1
LOOP1 LD GR5,0,GR3 ; 以下4行でGR3が指す語とGR4が指す語の内容を
LD GR6,0,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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment