平成31年度 春期 基本情報技術者試験(午後)問12 ソフトウェア開発(アセンブラ)の解き方

基本情報技術者試験(午後)問12 ソフトウェア開発(アセンブラ)
アセンブラ問題の解き方
平成31年度 春期




アセンブラ プログラムの解説 平成30年度 秋期

プログラムの概要

モジュール構成



プログラム概要





プログラムの詳細





プログラム1























プログラム2














設問の開設

設問1











アセンブラ プログラムの解説 平成31年度 春期

平成31年度 春期のプログラム解説です。
行番号14までの解説です。

データ構成




モジュール構成




BITSON 処理概要



BITSON 行番号3~9


BITSON 行番号10~14



アセンブラ すぐ解ける問題の解き方 平成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」が正解となります。


アセンブラ 過去問の解き方(平成31年度春期)


設問1のa 

“穴埋め箇所”付近のコメントに着目

コメント(行番号45)には、以下のように記載されています。
「ビット位置(GR3)」を「相対アドレス(GR2)」に変換

3
4
5
6
7
8
LD     GR3,1,GR1    ; GR3:ビット位置
; ビット位置を,相対アドレス(GR2)
; ビットインデックス(GR3)とに変換
LD     GR2,GR3
[  a  ]
AND    GR3,=#O00F

“相対アドレス”とは

相対アドレスの説明は、〔プログラムの説明〕に記載されています。
相対アドレスは、「ビット位置」を16で割ることで得られることが分ります。


該当する選択肢は?

「ビット位置」を16で割る処理に該当する選択肢は、「オ SRL GR2,4」になります。

SLL GR2,O,GR3
SLL GR2,4
SLL GR2,4,GR3
SRL GR2,O,GR3
SRL GR2,4
SRL GR2,4,GR3

講評

本問は、穴埋め箇所周辺のプログラム解析だけで正解を得ることができます。

設問1のb


アセンブラのノウハウ

LD  GR3,GR3
GR3GR3に転送してどんな意味があるのか?
GR3GR3に転送することで、GR3に設定されている値に応じてフラグレジスタが変化します。

SUBL  GR3,GR3
GR30を設定する処理になります。

穴埋め箇所周辺のトレースで正解を得られるか?

穴埋め箇所周辺のトレースで正解を得られるかを確認してみます。
GR3の用法を把握する必要があり、正解が得られなさそうです。

16
17
18
19
LD     GR3,GR3      ; GR3の設定値は?
JZE    FULL         ; GR30ならFULLに分岐
[  b  ]
SUBL   GR3,GR3      ; GR30を設定

選択肢から正解を得られるか?

選択肢の内容から正解を得られる(または絞り込める)かを確認してみます。
GR5を更新していますが、GR5の用法を把握する必要があり、正解が得られなさそうです。

ADDL GR5,GR2
ADDL GR5,GR3
ADDL GR5,GR4
SUBL GR5,GR2
SUBL GR5,GR3
SUBL GR5,GR4

一旦、保留

プログラム全体のトレースを要するので、本問題の解析を保留します。

設問1のc


選択肢から正解を得られるか?

分岐先・分岐条件を問う問題では、選択肢に記載された分岐先と分岐条件を整理します。

JNZ FIN
JNZ LOOP
JPL FIN
JPL LOOP
JZE FIN
JZE LOOP

分岐先は?

分岐先が問われた場合、プログラムの中で分岐元のないラベルがないかを捜します。
本問の場合、「FIN」へ分岐する分岐命令がなく、FINに分岐する選択肢が正解である可能性が高くなります。

分岐条件は?

プログラムを確認すると、GR4の設定値に従って分岐することが分ります。

27
28
BREAK  LD GR4,GR4  ;操作の対象になる未処理のビットあり?
       [  c  ]

GR4って何?

GR4を更新する箇所を抽出してみます。
GR4にはビット長が格納されていることが分ります。
ビット長は、初期値が正(非ゼロ)で、減算されていく変数ですので、JNZJPLでは同じ結果が得られてしまい選択肢として不適切です。JZEが正解となります。


9
20
27
28
      LD   GR4,2,GR1 ;GR4:ビット長(初期値)
FULL  SUBL GR4,GR5   ;操作するビット数だけビット長を減らす
BREAK LD GR4,GR4  ;操作の対象になる未処理のビットあり?
      [  c  ]

分岐先は?

ビット長が0になった時の分岐先としては、FINが妥当です。
以上より、正解は「オ JZE FIN」となります。

講評

本問は、分岐判断に使用される汎用レジスタの用途を解析だけで正解を得ることができます。

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

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