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

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

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

〔プログラム1,2の説明〕

 図1のように,主プログラムから数字列として渡された 100 分未満の時間を数値の秒に 変換する副プログラム TOSEC と,その逆変換を行う副プログラム TOTIME である。


図1 数学列の時間と数値の秒との変換

 m1 m2 は分,s1 s2 は秒を表す。 分は 0 〜 99 ,秒は 0 〜 59 の値とする。

(1) 副プログラム TOSEC は,主プログラムから数字列として渡された時間を, 数値の秒に変換して主プログラムに返す。

 時間が格納されている領域の先頭アドレスは GR1 に設定されて,主プログラムから渡される。 秒は GR0 に設定する。

(2) 副プログラム TOTIME は,主プログラムから渡された数値の秒を,数字列の時間に 変換して主プログラムに返す。

 秒は GR0 に,結果の数字列の時間を格納する領域の先頭アドレスは GR1 に設定されて, 主プログラムから渡される。

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

〔プログラム1〕

(行番号)

  1  TOSEC   START
  2          RPUSH
  3          LD     GR5,=0
  4          LD     GR2,=4      ; ループ回数
  5          LAD    GR3,VALUE1
  6  LOOP1   LD     GR0,0,GR1   ; GR0 ←時間の1桁
  7          AND    GR0,=#000F
  8          ADDA   GR0,GR5
  9          SUBA   GR2,=1
 10          JZE    FIN
 11          LD     GR4,0,GR3   ; GR4 ←掛ける値
 12          LD     GR5,=0
 13  LOOP2   SRL    GR4,1       ; GR0×GR4
 14          JOV    INCR
 15          
 16          LAD    GR3,1,GR3
 17          LAD    GR1,1,GR1
 18          JUMP   LOOP1
 19  INCR    ADDA   GR5,GR0
 20  CONT    SLL    GR0,1
 21          JUMP   LOOP2
 22  FIN     RPOP
 23          RET
 24  VALUE1  DC     10,6,10
 25          END

〔プログラム2〕

(行番号)

  1  TOTIME  START
  2          RPUSH
  3          LD     GR2,=3       ; ループ回数
  4          LAD    GR3,VALUE2
  5  L00P3   LD     GR4,0,GR3    ; GR4 ←割る値
  6          LD     GR5,=0
  7  LOOP4   CPA    GR0,GR4      ; GR0÷GR4
  8          JMI    NEXT
  9          ADDA   GR5,=1
 10          SUBA   GR0,GR4
 11          JUMP   LOOP4
 12  NEXT    OR     ,='0'
 13          ST     ,0,GR1
 14          LAD    GR3,1,GR3
 15          LAD    GR1,1,GR1
 16          SUBA   GR2,=1
 17          JNZ    LOOP3
 18          OR     ,='0'
 19          ST     ,0,GR1
 20          RPOP
 21          RET
 22  VALUE2  DC     600,60,10
 23        END

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

a に関する解答群

ア JMI CONT     イ JNZ CONT     ウ JUMP CONT     エ JZE CONT b,cに関する解答群 ア GR0      イ GR1      ウ GR2      エ GR3

オ GR4      カ GR5

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

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

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

基本情報技術者試験


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

 プログラム1を1回呼び出したとき,行番号 19 の ADDA 命令は 回 実行される。

 プログラム2に渡された秒が 10 進数で 274 であるとき, 行番号 10 の SUBA 命令は 回実行される。

解答群

ア 3       イ 6       ウ 7      エ 10

オ 19      カ 272      キ 274

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

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

基本情報技術者試験


設問3 1チーム4名の選手の 10 km 走のタイムの平均値を求めて 出力する副プログラム AVERAGE を作成した。プログラム3中の に 入れる正しい答えを,解答群の中から選べ。

(1) 主プログラムから,図2に示すデータが格納されている領域の先頭アドレスが GR1 に 設定されて渡される。4名の選手のタイムは図1に示す数字列の時間の形式で格納されている。


図2 主プログラムから渡される4名の選手のデータ

(2) 平均値は,図1に示す数字列の時間の形式で出力する。1秒未満は切り捨てる。

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

〔プログラム3〕

   AVERAGE START
           RPUSH
           LD     GR2,=4
           LD     GR3,GR1
           LD     GR4,=0
   LOOP5   LD     GR1,0,GR3
           CALL   TOSEC
           
           LAD    GR3,1,GR3
           SUBA   GR2,=1
           JNZ    LOOP5
           
           LD     GR0,GR4
           LAD    GR1,RESULT
           CALL   TOTIME
           OUT    RESULT,LEN4
           RPOP
           RET
  LEN4     DC   4
  RESULT   DS   4
           END

解答群

ア ADDA GR4,GR0    イ LD  GR4,GR0   ウ SUBA GR4,GR0

エ SLL  GR4,1     オ SLL  GR4,2    カ SRL  GR4,1

キ SRL  GR4,2

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

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


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