平成30年 春期 基本情報技術者 午後 問12
問12 CASL
次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラム1の説明〕 0 〜 65534 の整数を表す数字から成る文字列(以下,数字列という)を 数値に変換する副プログラム DTOB である。 (1) 文字列は,DC 命令の文字定数と同じ形式で主記憶に格納される。数字列 567 を 格納した例を,図1に示す。
![]() 図1 数字列の格納例 (2) 主プログラムは,数字列が格納されている領域の先頭アドレスを GR1 に, 数字列の長さを GR2 に設定して,DTOB を呼ぶ。DTOB は, 数値に変換して得た値を GRØ に格納して呼出し元に戻る。 (3) 副プログラム DTOB から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム1〕
DTOB START
RPUSH
ADDL GR2,GR1
LAD GRØ,Ø ; 戻り値の初期化
LP CPL GR1,GR2 ; 変換終了?
JZE FIN
LD GR4,Ø,GR1 ; 数字1文字の取出し
SUBL GR4,='Ø' ; 1 桁を数値に変換
SLL GRØ,1 ; GRØ を 1Ø 倍して GR4 を加算
LD GR5,GRØ
a
ADDL GRØ,GR5
ADDL GRØ,GR4
LAD GR1,1,GR1
JUMP LP
FIN RPOP
RET
END
a に関する解答群 エ SLL GR5,1 オ SLL GR5,2
〔プログラム2の説明〕 (1) 文字列は,一つ以上の空白文字で区切られた任意の個数の数字列を含み, 最後はピリオドで終わる。最後の数字列とピリオドの間, 又は文字列の先頭に一つ以上の空白文字があってもよい。文字列の例を,図2に示す。
![]() 図2 文字列の例 (2) 管理テーブルには,文字列中に数字列が現れるごとに,順に 1 語から成る要素を追加し, 数字列を数値に変換して得た値を格納する。数字列の探索が終了したとき, 管理テーブルの最後に 1 語から成る要素を追加し,数値の終わりを示す印として −1 を格納する。 図2の文字列を GETWD で処理して得た管理テーブルを,図3に示す。
![]() 図3 GETWD で処理して得た管理テーブル (3) 主プログラムは,文字列が格納されている領域の先頭アドレスを GR1 に, 管理テーブルの先頭アドレスを GR2 に設定して,GETWD を呼ぶ。 (4) 副プログラム GETWD から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム2〕
GETWD START
RPUSH
LD GR6,GR1
LD GR7,GR2
LD GR3,=-1 ; 数字列の処理状態フラグの初期化
LAD GR6,-1,GR6
LP LAD GR6,1,GR6
LD GR4,Ø,GR6 ; 1文字の取出し
CPL GR4,='.'
JZE FIN
CPL GR4,=' '
b
CALL SETWD
JUMP LP
NUM LD GR3,GR3 ; 数字列の処理中?
JZE LP
LD GR3,=Ø ; 次の数字列の処理開始
LD GR1,GR6 ; 数字列の先頭アドレスを退避
JUMP LP
FIN CALL SETWD
LD GR2,=-1
ST GR2,Ø,GR7 ; 数値の終わりを示す印を格納
RPOP
RET
SETWD LD GR3,GR3
c
LD GR2,GR6
SUBL GR2,GR1
CALL DTOB ; 数字列を数値に変換
ST GRØ,Ø,GR7
LD GR3,=-1 ; 数字列の処理中状態を解除
d
FIN2 RET
END
b に関する解答群 エ JZE FIN オ JZE LP カ JZE NUM c に関する解答群 エ JZE FIN オ JZE FIN2 カ JZE NUM d に関する解答群 エ LAD GR7,1,GR7 オ LD GR6,GR1 カ LD GR7,GR2
〔プログラム3の説明〕 (1) MULT は,数字列を二つだけ合む,〔プログラム2の説明〕の (1) で示した形式の 文字列について,最初の数字列に対応する数値を被乗数とし,2番目の数字列に 対応する数値を乗数として乗算を行う。乗算においてあふれは発生しないものとする。 (2) 主プログラムは,文字列が格納されている領域の先頭アドレスを GR1 に設定して, MULT を呼ぶ。MULT は,演算結果を GRØ に格納して呼出し元に戻る。 (3) 副プログラム MULT から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。
〔プログラム3〕
MULT START
RPUSH
LAD GR2,CTBL
CALL GETWD
LD GR4,Ø,GR2 ; GR4 ← 被乗数
LD GR5,1,GR2 ; GR5 ← 乗数
LD GRØ,=Ø
LD GR5,GR5
LP e
LD GR3,GR5
AND GR3,=#ØØØ1 ; 乗数の最下位ビットのチェック
JZE NEXT
ADDL GRØ,GR4
NEXT SLL GR4,1 ; 被乗数を1ビット左論理シフト
f
JUMP
FIN RPOP
RET
CTBL DS 3 ; GETWD 用管理テーブル
END
e に関する解答群 エ JPL NEXT オ JZE FIN カ JZE NEXT f に関する解答群 エ SLL GR5,1 オ SRL GR5,1
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2025 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||
