Created
November 18, 2018 07:03
-
-
Save maehrm/fe1edcfcdbbd6e5c77c4ece80865e5c3 to your computer and use it in GitHub Desktop.
平成22年度秋期基本情報午後問12_設問3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Q123 START | |
LAD GR1,FIG1 | |
LD GR2,P | |
LD GR3,Q | |
CALL PREVRS | |
RET | |
FIG1 DC #B3D1 ; 図1のビットの並び | |
P DC 4 ; p = 4 | |
Q DC 8 ; q = 8 | |
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 | |
PREVRS START | |
RPUSH | |
LD GR4,0,GR1 ; ビット列を保存 | |
CALL REVRS ; ビット列のビットの並びを逆転 | |
LD GR5,0,GR1 ; GR5 ← 逆転したビット列 | |
LD GR6,=16 | |
SUBA GR6,GR3 ; GR6 ← 16-q | |
SRL GR5,0,GR2 ; 逆転した部分ビット列αを右端に移動 | |
SLL GR5,0,GR6 ; 逆転した部分ビット列αを左端に移動 | |
SRL GR5,0,GR2 ; 逆転した部分ビット列αをpビット右に移動 | |
LD GR6,=#8000 | |
SRA GR6,-1,GR3 ; qビット連続した1の並びを作成 | |
SRL GR6,0,GR2 | |
XOR GR6,=#FFFF | |
AND GR6,GR4 ; 元のビット列中の部分ビット列αにゼロを設定 | |
OR GR6,GR5 | |
ST GR6,0,GR1 | |
RPOP | |
RET | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment