平成22年秋期試験午後問題 問1

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問1 ハードウェア

温度モニターに関する次の記述を読んで,設問1~3に答えよ。

 図1に温度モニターのシステム構成図の一部を示す。
 温度の検出範囲は0~99℃とし,対応するA/D変換器の出力値は,0~99の16ビット符号なし2進数とする。このシステムは,タイマ割込み発生時に起動される割込みプログラムの中で温度検出器の出力値をA/D変換器を介して取り込み,2個の7セグメントLEDからなる表示器に表示する。1個の7セグメントLEDには10進数の数字1けたを表示する。検出された温度0~99℃に対して,表示器では"00"~"99"として表示する。
 LEDの各セグメントは,対応する出力ポートのビットの値が1のとき点灯し,0のとき消灯する。7セグメントLEDに,"0"~"9"の数字を表示するために,対応する8ビットのデータを数字の字形に合わせて設定する。これらを形状データという。
 割込みプログラムが起動するA/D変換の開始から,表示処理の完了までの時間は,タイマ割込み間隔に比べて十分短い。
pm01_1.png
 割込みプログラム中で,各機器に対するデータの読込み及び書込みは各機器に割り当てられたI/Oポート番号を指定して行う。7セグメントLEDが接続されている出力ポートにはI/Oポート番号1が,A/D変換器にはI/Oポート番号2と3がそれぞれ割り当てられている。表1に出力ポートとA/D変換器の動作概要を示す。
pm01_2.png

設問1

下位けたの7セグメントLEDに図2のように"5"を表示したい。出力ポートのビット7~0に設定すべき形状データとして正しい答えを,解答群の中から選べ。ここで,形状データはビット7を最上位ビットとする16進数で表記する。
pm01_3.png
解答群
  • 66
  • B6
  • BE
  • DA
  • F2
解答選択欄
  •  
  •  

解説

図1「温度モニターのシステム構成図の一部」をもとに、出力ポートのビット値と上位けた・下位けたの関係をわかりやすくすると下図のようになります。このとき0ビット目と8ビット目は常に0になるので注意が必要です。
pm01_6.png
下位けたの"5" と表示するには、上図から「1、2、4、5、7」の5つのビットを1すればよいことがわかります。

これを2進数で表すと「10110110」となり、16進数表記に変換すると正解の B6 となります。

設問2

タイマ割込み発生時に起動される割込みプログラムについて,その処理の流れを図3に示す。図3の処理中の に入れる正しい答えを,解答群の中から選べ。
 なお,処理中で使用している擬似命令の意味は表2のとおりとする。
pm01_4.png
a,b に関する解答群
  • INPUT 1
  • INPUT 2
  • OUTPUT 1
  • OUTPUT 2
  • OUTPUT 3
解答選択欄
  • a:
  • b:
  • a=
  • b=

解説

aについて〕
流れ図の右のコメントに「A/D変換開始」とあります。また、表1「出力ポートとA/D変換の動作概要」を見ると、A/D変換器の「番号2のI/Oポートに値1を書き込むとA/D変換が開始される」とあります。
aの前処理にて、GRには値1がセットされています。この値1を表2「疑似命令」のOUTPUT命令「GRに設定したデータを、番号で指定したI/Oポートに接続されている機器に書き込む」を使いA/D変換器のI/Oポート2番に書き込むことで、A/D変換が開始されることになります。

aエ:OUTPUT2

bについて〕
ループ中の処理で、GRが0ならループ続ける流れになっています。この判定条件は、コメント部の記述からA/D変換中かどうかをチェックしていることがわかります。
なぜGRが0ならループ続けるかというと、表1「出力ポートとA/D変換器の動作概要」の「番号2のI/Oポートから読み込んだ値が0ならば、変換中を示す」及び「番号2のI/Oポートから読み込んだ値が0以外ならば、A/D変換が終了し出力値が確定していることを示す」という2つの仕様があるからです。

したがってこのループは、A/D変換器のI/Oポート番号2からGRに値を読込み、GRが0ならば変換中なのでループを繰り返し(変換完了まで待つ)、GRが0以外ならばループを抜け続く処理に移るというの流れになることがわかります。

つまりbには、A/D変換器のI/Oポート番号2からGRに値を読み込む命令「INPUT2」がはいることになります。

bイ:INPUT2

設問3

割込みプログラムの中で呼び出す手続DISPLAYの仕様と実行例は次のとおりである。実行例に関する記途中の に入れる正しい答えを,解答群の中から選べ。

〔手続DISPLAYの仕様〕
 DISPLAYはGRに設定されたデータが示す値を表示器に表示する。7セグメントLEDに "0"~"9" の数字を表示するために,それぞれ8ビットからなる10個の形状データを表としてプログラム中に保持している。
 GRに設定されたデータは,検出した温度に対応する 0~99 の16ビット符号なし2進数であり,このまま出力ポートに設定しても意図した表示にはならない。GRの内容を図4のとおり2けたのBCD(2進化10進数)に変換し,表を引き,各けたに対応した形状データを図5のとおりにGRに設定して出力ポートに書き込む。
pm01_5.png
〔手続DISPLAYの実行例〕
 図5のGRの内容が16進数表記でFEFCであったとき,BCD値を格納していた図4のGRの内容は16進数表記でcであり,割込みプログラムから手続DISPLAYに渡されたGRの内容は16進数表記でdである。
c に関する解答群
  • 0008
  • 0309
  • 0800
  • 0903
  • 0907
d に関する解答群
  • 0008
  • 0027
  • 0050
  • 005D
  • 0061
解答選択欄
  • c:
  • d:
  • c=
  • d=

解説

cについて〕
図5では出力ポートに書き込む内容を保持しています。GRの値であるFEFCを2進数に変換すると「1111111011111100」になり、これを値が表示される7セグメントLEDに対応させると下図のようになります。
pm01_7.png
上図からわかるように、A/D変換器から読み込んだデータは10進数で80であることがわかります。
BCD(Binary-coded decimal)は、10進表現での1桁を、0から9までを表す4桁の2進数で表すので、

 上位けたである"8"は2進数表記で"1000"、16進数表記で"8"
 下位けたである"0"は2進数表記で"0000"、16進数表記で"0"

つまり図4「BCD変換後のGRの内容」時点でのデータ内容は、16進表記で"0800"になります。

cウ:0800

dについて〕
LEDの出力結果から割込みプログラムから手続DISPLAYに渡されたGRの内容は、10進数で"80"であることが分かっているので、これを16進数表記に変換すると"0050"となります。

dウ:0050

Pagetop