Created
December 2, 2018 03:08
-
-
Save maehrm/d310f6f0a804bf953feed86b635bf41e to your computer and use it in GitHub Desktop.
平成21年度春期基本情報午後問12_設問2
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
Q122 START | |
LAD GR1,X | |
LAD GR2,Y | |
LAD GR3,ANS | |
CALL MUL | |
RET | |
X DC #1234 ; 被乗数(上位語) | |
DC #5678 ; 被乗数(下位語) | |
Y DC #0001 ; 乗数(上位語) | |
DC #0001 ; 乗数(下位語) | |
ANS DS 2 | |
END | |
MULS START ; 32ビットx16ビット→32ビット | |
RPUSH | |
LAD GR6,0 ; 積 上位語の初期化 | |
LAD GR7,0 ; 積 下位語の初期化 | |
LD GR4,0,GR1 ; 被乗数 上位語の取り出し | |
LD GR5,1,GR1 ; 被乗数 下位語の取り出し | |
LP SRL GR2,1 ; 乗数を1ビット右にシフト | |
JOV ADD32 ; 設問1(a) | |
JZE FIN | |
JUMP NEXT ; 加算処理をスキップ | |
ADD32 ADDL GR6,GR4 ; 32ビット+32ビット→32ビット | |
ADDL GR7,GR5 | |
JOV ADJ1 ; 設問1(b) | |
JUMP NEXT | |
ADJ1 ADDL GR6,=1 ; けた上げ処理 | |
NEXT SLL GR4,1 ; 被乗数(32ビット)を1ビット左にシフト | |
SLL GR5,1 ; 設問1(c) | |
JOV ADJ2 | |
JUMP LP | |
ADJ2 OR GR4,=1 | |
JUMP LP | |
FIN ST GR6,0,GR3 ; 乗算結果の格納 | |
ST GR7,1,GR3 | |
RPOP | |
RET | |
END | |
MUL START ; 32ビットx32ビット→32ビット | |
RPUSH | |
PUSH 0,GR3 | |
PUSH 0,GR2 | |
LD GR2,1,GR2 ; 乗数下位語を取り出してGR2に設定 | |
CALL MULS ; 被乗数x乗数下位語→積(A) | |
POP GR2 | |
LD GR2,0,GR2 ; 設問2(d) | |
LAD GR3,SV ; 結果の格納先として作業領域を設定 | |
CALL MULS ; 被乗数x乗数下位語→積(B) | |
LD GR6,1,GR3 ; 設問2(e) | |
POP GR3 | |
ADDL GR6,0,GR3 ; 積(A)の上位語と積(B)の下位語を加算 | |
ST GR6,0,GR3 | |
RPOP | |
RET | |
SV DS 2 | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment