Skip to content

Instantly share code, notes, and snippets.

@maehrm
Created December 2, 2018 03:08
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/d310f6f0a804bf953feed86b635bf41e to your computer and use it in GitHub Desktop.
Save maehrm/d310f6f0a804bf953feed86b635bf41e to your computer and use it in GitHub Desktop.
平成21年度春期基本情報午後問12_設問2
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