基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成20年 秋期 基本情報技術者 午後 問13
問13   CASL

 次のアセンブラプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

 アンケートに対する n 人分の回答を集計し,集計結果をグラフで出力する 副プログラム SUMMARY である。

 アンケートの質問は 16 項目からなり, "はい" 又は "いいえ" で答えると 副プログラム SUMMARY は,項目ごとに "はい" と答えた人数を集計し,棒グラフで出力する。 このグラフの表示形式を図1に示す。横軸は項目番号,縦軸は "はい" と答えた人数であり, 一つの "*" が1人を表す。□は空白文字を表す。

      図1 グラフの表示形式

(1) 1人分の回答は図2のように1語に格納され,左端のビットから順に項目番号 1 〜 16 に 対応している。"はい" が1, "いいえ" が0として格納されている。

      図2 1人分の回答の格納形式

(2) n 人分の回答が,図3のように連続する n 語の領域に格納され, その先頭アドレスが GR1 に設定されて主プログラムから渡される。

      図3 主プログラムから渡される n 人分の回答

(3) 値 n (1≦ n ≦ 100)は GR0 に設定されて,主プログラムから渡される。

(4) 副プログラム SUMMARY は,まず,項目ごとに "はい" と答えた人数を数え, 図4に示す 16 語の領域 COUNTR に格納する。

      図4 集計結果を格納するカウンタ領域

 次に,この集計結果を図1で示した棒グラフで出力する。グラフは,上から順に 1行ずつ出力する(出力行数は,q1 〜 q16 の最大値に1を加えたものとなる)。

(5) 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。

〔プログラム〕

(行番号)

 1 SUMMARY START
 2         RPUSH
 3 ; カウンタ領域と出力バッファを初期化
 4         LD    GR2,=0
 5         LD    GR3,=' '
 6         LD    GR4,=0          ; ループカウンタ
 7         LAD   GR5,PBUF        ; 出力バッファのポインタ
 8 LOOP1   ST    GR2,COUNTR,GR4  ; カウンタ領域を初期化
 9         ST    GR3,0,GR5       ; 出力バッファを空白で初期化
10         ST    GR3,1,GR5
11         ST    GR3,2,GR5
12                  ; 出力バッファのポインタを更新
13         LAD   GR4,1,GR4       ; ループカウンタを更新
14         CPA   GR4,=16
15         JMI   LOOP1
16 ; 項目ごとに "はい" と答えた人数を集計
17         LD    GR5,=0          ; GR5: "はい" の人数の最大値
18 LOOP2   LD    GR4,=0          ; カウンタ領域のポインタ
19         LD    GR2,0,GR1       ; GR2 ←1人分の回答
20 LOOP3   SLL   GR2,1           ; 回答は "はい" ?
21         
22         JZE   NEXTW           ; 残りの項目はすべて "いいえ"
23         JUMP  OFF
24 ON      LD    GR3,COUNTR,GR4  ; カウンタに1を加算
25         ADDA  GR3,=1
26         ST    GR3,COUNTR,GR4
27         CPA   GR3,GR5         ; 最大値と比較
28         JPL   CHANGE
29         JUMP  OFF
30 CHANGE  LD    GR5,GR3         ; 最大値を入替え
31 OFF     LAD   GR4,1,GR4       ; 次の項目
32         JUMP  LOOP3
33 NEXTW   
34         SUBA  GR0,=1          ; 全回答処理済?
35         JPL   LOOP2
36 ; 集計結果を棒グラフで出力
37         LD    GR5,GR5
38         JZE   FIN
39         LD    GR0,='*'
40 LOOP4   LD    GR3,=1          ; 出力バッファのポインタ
41         LD    GR4,0           ; カウンタ領域のポインタ
42 LOOP5   CPA   GR5,COUNTR,GR4  ; "はい" の人数と比較
43         JNZ   NOTSET
44         ST    GR0,PBUF,GR3    ; 出力バッファに "*" を設定
45 NOTSET  LAD   GR3,3,GR3       ; 出力バッファのポインタを更新
46         LAD   GR4,1,GR4       ; カウンタ領域のポインタを更新
47         CPA   GR4,=16
48         JMI   LOOP5
49         OUT   PBUF,PLEN
50         SUBA  GR5,=1
51         
52 FIN     OUT   FOOTER,PLEN
53         RPOP
54         RET
55 COUNTR  DS    16              ; カウンタ領域
56 PLEN    DC    48
57 PBUF    DS    48              ; 出力バッファ
58 FOOTER  DC    '01 02 03 04 05 06 07 08 09 10 11 12 13 '
59         DC    '14 15 16 '
60         END

設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア LAD GR5,1,GR5    イ LAD GR5,2,GR5

ウ LAD GR5,3,GR5    エ LAD GR5,4,GR5

b に関する解答群 ア JMI ON      イ JNZ ON

ウ JOV ON      エ JPL ON

c に関する解答群 ア LAD GR1,-1,GR1    イ LAD GR1,1,GR1

ウ LAD GR2,-1,GR2    エ LAD GR2,1,GR2

d に関する解答群 ア JPL LOOP4     イ JPL LOOP5

ウ JZE LOOP4     エ JZE LOOP5

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。

 主プログラムから渡される n の値は3で,3人分の回答は図5のとおりとする。

 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0  
 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0

      図5  3人分の回答

 このとき,行番号 20 の SLL 命令は 回実行され, 行番号 44 の ST 命令は 回実行される。

解答群

ア 4       イ 6       ウ 11       エ 16

オ 17       カ 20       キ 48

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp |  プライバシーポリシー・著作権・リンクお問合わせ