アセンブラ すぐ解ける問題の解き方 平成31年度 春期

プログラム全体をトレースすることなく、短時間で解ける問題について、その解答方法を紹介します。

a~fの6問のうちa,c,e,f4問が、プログラム全体をトレースすることなく、解くことができます。

設問1 - a

[穴埋め箇所]


[選択肢]



[解き方]

1.  解答群からの推定
解答群の命令は、いずれも“GR2”を更新しています。
⇒“GR2”が何なのか?

2.  更新前の“GR2”は?
“GR3”には「ビット位置」が格納されます。
(「3行目」のコメントより)
“GR2”にも「ビット位置」が格納されます。
(「6行目」の「LD GR2,GR3」により)

3.  更新後の“GR2”は?
“GR2”には「相対アドレス」が格納されます。
(
4行目」のコメント(「ビット位置を、相対アドレス(GR2)に変換」)より)

4.  「相対アドレス」とは?
〔プログラムの説明〕の図1で示されるように、相対アドレスは16ビット毎に加算される値です。
「相対アドレス」は、「ビット位置」を16で割ることで求められます。
5.  正答は?
穴埋め箇所は、「ビット位置」から「相対アドレス」に変換する処理となります。「相対アドレス」は「ビット位置」を16で割ることで得られます。
「ビット位置」を16で割る命令は「SRL GR2,4」です。

「オ」が正解となります。

[別の絞り込み方法]

1.  命令の妥当性から推定
l  3行目」のコメントより、“GR3”には「ビット位置」が格納されます。
l  「ビット位置」の取り得る値は、0~無限であり、選択肢の「ア」「ウ」「エ」「カ」の命令におけるシフト量としては不適当です。
以上より、選択肢の「ア」「ウ」「エ」「カ」の可能性は低くなります。

2.  アセンブラのお決まりの処理パターンから推定
上位の情報と下位の情報を抽出するにあたって、お決まりの処理を行うことが多々あります。
上位16bitと下位4bitを抽出する場合、以下のように処理します。
l  上位の情報抽出方法:4bit右にシフト
l  下位の情報抽出方法:#000FAND

このことから、選択肢を絞り込むことは難しいですが、知識の片隅にあると便利です。

設問1 - c

[穴埋め箇所]



[選択肢]


[解き方]

1. 解答群からの推定

分岐条件と分岐先が問われています。

分岐条件と分岐先を整理します。
⇒分岐条件は「JNZ」、「JPL」、「JZE」からの三択
分岐先は"FIN"、" LOOP"からの二択

2. 分岐条件の整理

「27行目」の「LD GR4,GR4」で分岐条件を判定しています。

“GR4”が正の時に分岐する命令は、「JNZ」と「JPL」
“GR4”が0の時に分岐する命令は、「JZE」
“GR4”が負の時に分岐する命令は、「JNZ」
です。

正の時に分岐すると仮定すると、正解が二個になってしまうので正しくありません。「JPL」は除外されます。

「JZE」か「JNZ」か?
「行番号32」で“GR4”を参照しているので、“GR4”が0の時分岐(「JZE」)することとなります。


3.  分岐先の絞り込み
分岐先を絞り込むにあたっては、分岐元のないラベルを捜します。

ラベル"FIN"に分岐する命令が存在していません。
ラベル"FIN"に分岐する命令の可能性が高くなります。

分岐命令は、「JZE」で「ビット長」が0の時に分岐するので、"FIN"への分岐が正解となります。

4.  正答は?
「オ JZE FIN」が正解となります。

設問2 e,f

[再編成前のモジュール構成]








[再編成後のモジュール構成]










[選択肢 e]


[解き方]

1.  設問の意図を汲み取る
「プログラム1」のモジュール名が、BITSONからBITSOPに変更されるので、「イBITSOP」が正解となります。

[選択肢 f]


1.  設問の意図を汲み取る
「プログラム3」は、“GR7”に“SETOP”のアドレスを設定して「プログラム1」を呼び出すので、「CALL 0,GR7」で目的の“SETOP”を実行できる。

「オ 0,GR7」が正解となります。


0 件のコメント:

コメントを投稿

基本情報技術者試験 アセンブラ(CASL) 原稿 20210529

  基本情報技術者試験 アセンブラ(CASL) 簡単に5割 平成21年春期,平成21年秋期 平成21春期 平成21秋期 平成22春期 平成22秋期 平成21春期 概要 解き方 設問1-a 設問1-b 設問1-c 設問2-d...