平成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 ] | ||||||