令和元年 秋期 基本情報技術者 午後 問12
問12 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラム1の説明〕 符号が同一である二つの 16 ビットのパック 10 進数を加算する副プログラム ADDP1 である。 本問では,パック 10 進数は,3 桁の 10 進数の各桁をそれぞれ 4 ビットで表現し, 最下位の 4 ビットに符号として,正又は 0 の場合は 1100 を, 負の場合は 1101 を付与する数値表現とする。10 進数 246 を, パック 10 進数で表現した例を,図1に示す。
![]() 図1 1Ø 進数 246 のパック 1Ø 進数表現 符号が同一である二つのパック 10 進数の加算例を,図2に示す。
![]() 図2 符号が同一である二つのパック 1Ø 進数の加算例 (1) 副プログラム ADDP1 は,加算の対象となる符号が同一である二つの 16 ビットの パック 10 進数が,GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP1 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。ここで,加算において, 10 進数の百の位からの桁上がりは発生しないものとする。 〔プログラム1〕
ADDP1 START
RPUSH
ST GR1,A
ST GR2,B
LAD GR3,4 ;ビット数カウンタの初期化
a
ST GR1,RESULT ;符号部を退避
LD GR1,A
SRL GR1,Ø,GR3
LD GR2,B
SRL GR2,Ø,GR3
LOOP AND GR1,=#ØØØF
AND GR2,=#ØØØF
LAD GRØ,Ø
ADDL GR1,GR2
CPL GR1,=1Ø ;1Ø 以上の場合は桁上げ
b
SUBL GR1,=1Ø
LAD GRØ,1
MERGE c
OR GR1,RESULT ;中間結果との併合
LAD GR3,4,GR3
CPL GR3,=16
JZE FIN ;終了判定
ST GR1,RESULT ;中間結果を退避
LD GR1,A
SRL GR1,Ø,GR3
LD GR2,B
SRL GR2,Ø,GR3
ADDL GR1,GRØ
JUMP LOOP
FIN LD GRØ,GR1
RPOP
RET
A DS 1
B DS 1
RESULT DS 1
END
a に関する解答群 エ OR GR1,=#ØØØF オ OR GR1,=#FØØØ カ OR GR1,=#FFFF b に関する解答群 エ JOV MERGE オ JZE MERGE
c に関する解答群 エ SRA GR1,Ø,GR3 オ SRL GR1,Ø,GR3 カ SRL GR1,=4
〔プログラム2の説明〕 (1) 副プログラム ADDP2 は,加算の対象となる符号が異なる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP2 は,加算結果を GRØ に設定して呼出し元に戻る。このとき, 汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム2〕
ADDP2 START
RPUSH
CPL GR1,GR2
d
LD GR4,GR1
LD GR1,GR2
LD GR2,GR4
INI ST GR1,A
ST GR2,B
LAD GR3,4 ;ビット数カウンタの初期化
a
ST GR1,RESULT ;符号部を退避
LD GR1,A
SRL GR1,Ø,GR3
LD GR2,B
SRL GR2,Ø,GR3
LOOP AND GR1,=#ØØØF
AND GR2,=#ØØØF
LAD GRØ,Ø
SUBL GR1,GR2
JPL MERGE
e
ADDL GR1,=1Ø
LAD GRØ,1
MERGE c
OR GR1,RESULT
LAD GR3,4,GR3
CPL GR3,=16
JZE FIN ;終了判定
ST GR1,RESULT ;中間結果を退避
LD GR1,A
SRL GR1,Ø,GR3
LD GR2,B
SRL GR2,Ø,GR3
f
JUMP LOOP
FIN LD GRØ,GR1
CPL GRØ,=#ØØØD
JNZ FIN2
LAD GRØ,#ØØØC
FIN2 RPOP
RET
A DS 1
B DS 1
RESULT DS 1
END
d に関する解答群 エ JPL INI オ JZE INI e に関する解答群 エ JZE MERGE オ SLL GR1,Ø,GR3 カ SRL GR1,Ø,GR3 f に関する解答群 コ ADDL GR3,GRØ オ SUBL GR1,=1 カ SUBL GR1,GRØ
設問3 符号にかかわらず二つの 16 ビットのパック 10 進数を加算できるように, 符号の組合せによって副プログラム ADDP1 と ADDP2 を使い分ける副プログラム ADDP を作成した。 プログラム3中の に入れる正しい答えを,解答群の中から選べ。 〔プログラム3の説明〕 (1) 副プログラム ADDP は,加算の対象となる二つの 16 ビットのパック 10 進数が, GR1,GR2 に設定されて,呼び出される。 (2) 副プログラム ADDP の呼出し元に戻ったとき,加算結果は GRØ に入っている。 〔プログラム3〕
ADDP START
LD GRØ,GR1
g
SRL GRØ,1
h
CALL ADDP1
JUMP FIN
P2 CALL ADDP2
FIN RET
END
g に関する解答群 エ SUBL GR1,=1 オ XOR GRØ,GR2 h に関する解答群 エ JPL P2 オ JZE P2
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2025 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||
