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

平成28年 春期 基本情報技術者 午後 問12
問12   CASL

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

 

〔プログラムの説明〕
 10,000 m競走に,1チーム 8 名で,9 チーム 72 名が参加し,各チームの合計タイムを競う。 プログラム RACE は,個人別のタイムを所属するチーム番号とともに入力し, チーム別合計タイムを求め,チーム別合計タイムの昇順に,チーム番号とそのチームの 1名当たりの平均タイムを出力する。

 

(1) 個人ごとの入力データ及びチームごとの出力データの形式は図1のとおりとする。 ここで,60 分以上のデータはないものとする。


図1 入出力データの形式

 

(2) プログラム RACE の入力データと出力結果の例を図2に示す。


図2 入力データと出力結果の例

 

(3) データの入力処理と出力処理は,それぞれ副プログラム INPUT と OUTPUT を呼び出して行う。

(4) 副プログラム INPUT は,呼ばれるごとに図1に示す形式の個人のデータを1件読み込む。 読み込んだデータのチーム番号及び秒数に変換したタイムを2進数で, それぞれ GR1 と GR2 に設定し,GRØ には正の値を設定して,呼出し元に返す。
 全員のデータを読み終わっている場合は,GRØ に−1を設定して呼出し元に返す。

(5) 副プログラム OUTPUT は,GR1 と GR2 のそれぞれに2進数で設定されたチーム番号と 平均タイム(1秒未満を切り捨てた秒数)を,図1に示す形式に変換して書き出す。

 

〔プログラム1〕
RACE     START
LOOP11   CALL   INPUT
         LD     GRØ,GRØ
         JMI    IEND
         ADDA   GR2,TOTAL,GR1      ; タイム
         ST     GR2,TOTAL,GR1
         JUMP   LOOP11
IEND     LD     GR3,=9
         LD     GRØ,=#7FFF         ; 最大値
LOOP12   LD     GR2,GRØ
         LD     GR4,=9
LOOP13   CPA    GR2,TOTAL,GR4
         JPL    CHANGE
         JUMP   NEXT
CHANGE   LD     GR2,TOTAL,GR4      ; GR2←新たなタイムの最小値
         LD     GR1,GR4            ; GR1←そのチーム番号
NEXT     SUBA   GR4,=1
         
         SRL    GR2,3              ; 平均タイム
         CALL   OUTPUT
         ST     GRØ,TOTAL,GR1      ; 処理済みとして最大値を設定
         SUBA   GR3,=1
         
         RET
TOTAL    DC     Ø,Ø,Ø,Ø,Ø,Ø,Ø,Ø,Ø,Ø     ; (チーム数+1) 個の領域
         END

基本情報技術者試験


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

 

解答群 ア JMI  LOOP12     イ JMI  LOOP13     ウ JPL  LOOP12     エ JPL  LOOP13

オ JUMP  LOOP12     カ JUMP  LOOP13     キ JZE  LOOP12     ク JZE  LOOP13

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

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

基本情報技術者試験


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

 

     同じ合計タイムのチームが複数ある場合,

 

解答群 ア チーム番号の昇順に出力される

イ チーム番号の降順に出力される

ウ どのチームが先に出力されるかは時々で異なる

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

基本情報技術者試験


設問3   副プログラム OUTPUT を次に示す。プログラム2中の に入れる正しい答えを, 解答群の中から選べ。

 

〔プログラム2〕
(行番号)
 1  OUTPUT   START
 2           RPUSH
 3           OR     GR1,=#ØØ3Ø
 4           ST     GR1,TEAM
 5           LAD    GR3,TIME
 6           LD     GR4,=Ø
 7           LD     GR5,=3           ; ループ回数
 8  LOOP21   LD     GR6,DIVISOR,GR4  ; GR6 ← 除数
 9           LD     GR7,=Ø           ; GR7 ← 商
1Ø  LOOP22   CPA    GR2,GR6
11           JMI    SETTIME
12           SUBA   GR2,GR6
13           ADDA   GR7,=1
14          
15  SETTIME  OR     GR7,=#ØØ3Ø
16           ST     GR7,Ø,GR3
17           ADDA   GR4,=1
18           ADDA   GR3,=1
19           SUBA   GR5,=1
2Ø          
21           OR     GR2,=#ØØ3Ø
22           ST     GR2,Ø,GR3
23           OUT    TERM,LEN
24           RPOP
25           RET
26  TEAM     DS     1
27           DC     ' '
28  TIME     DS     4
29  LEN      DC     6
3Ø  DIVISOR  DC     6ØØ,6Ø,1Ø
31           END

 

d に関する解答群 ア JMI  LOOP21     イ JMI  LOOP22      ウ JPL  LOOP21      エ JUMP  LOOP21

オ JUMP  LOOP22     カ JZE  LOOP22

 

e に関する解答群 ア JMI  LOOP21     イ JPL  LOOP21      ウ JPL  LOOP22      エ JUMP  LOOP22

オ JZE  LOOP21     カ JZE  LOOP22

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

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

基本情報技術者試験


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

 出力されたデータが次のとき,プログラム2の行番号 12 の SUBA 命令は 回実行された。

解答群

ア 9      イ 17      ウ 2Ø      エ 27Ø      オ 299
解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]