平成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,3,GR5 エ LAD GR5,4,GR5 ウ JOV ON エ JPL ON ウ LAD GR2,-1,GR2 エ LAD GR2,1,GR2 ウ JZE LOOP4 エ JZE LOOP5
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。 主プログラムから渡される n の値は3で,3人分の回答は図5のとおりとする。
図5 3人分の回答 解答群 オ 17 カ 20 キ 48
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||