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

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

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

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

 与えられた値 x に対し,係数が全て1である n 次多項式 F(x,n) の値を 求める副プログラム POLY である。

F(x, n)=xn+xn-1+…+x+1  (n≧1) (1) POLY は,多項式の次数 n が GR1 に,x の値が GR2 に設定されて呼ばれ, 計算結果を GR0 に設定して呼出し元に戻る。n は1〜 32767 の整数,x は非負の整数とし, F(x, n) の値が 16 ビット符号なし2進整数の範囲に収まるように与えられる。 POLY は,その中で副プログラム MULT を利用する。

(2) MULT は,16 ビット符号なし2進整数同士の乗算を行う副プログラムであり, 被乗数と乗数がそれぞれ GR0 ,GR2 に設定されて呼ばれ,乗算結果を GR0 に設定して呼出し元に戻る。 乗算結果などの桁あふれは発生しないものとする。

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

〔プログラム1〕
(行番号)

 1  POLY    START
 2          RPUSH
 3          LD     GR4,=0         ; 計算結果格納レジスタの初期化
 4  LP1     LD     GR3,GR1
 5          
 6          LD     GR0,=1         ; xn の計算開始
 7  LP2     LD     GR3,GR3
 8          JZE    BRK            ; xnの計算終了なら BRK へ
 9          CALL   MULT           ; (GR0) ← (GR0)×(GR2)
10          LAD    GR3,-1,GR3
11          JUMP   LP2
12  BRK     ADDL   GR4,GR0        ; 計算結果格納レジスタに xn の値を加算
13          LAD    GR1,-1,GR1     ; n から1を減じ,低次の項の計算へ
14          JUMP   LP1
15  FIN     LD     GR0,GR4
16          RPOP
17          RET
18          END

〔プログラム2]

   MULT    START                 ; シフトによる乗算
           RPUSH
           LD     GR1,GR0
           LD     GR0,=0         ; 乗算結果の初期化
           LD     GR2,GR2
   LP      
           LD     GR3,GR2
           AND    GR3,=#0001     ; 最下位ビットのチェック
           JZE    CONT
           ADDL   GR0,GR1
   CONT    
           SRL    GR2,1
           JUMP   LP
   FIN     RPOP
           RET
           END

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

a に関する解答群

ア JMI  BRK       イ JMI  FIN       ウ JNZ  BRK

エ JNZ  FIN       オ JZE  BRK       カ JZE  FIN

b に関する解答群

ア JMI  CONT       イ JMI  FIN       ウ JNZ  CONT

エ JOV  CONT       オ JPL  CONT       カ JZE  FIN

c に関する解答群

ア ADDL  GR0,GR2      イ LD  GR2,GR1       ウ OR  GR2,=#0001

エ SLL  GR1,1        オ SRA  GR1,1        カ SRL  GR1,1

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

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

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

基本情報技術者試験


設問2 プログラム1の POLY を使用して F(x, 4) を計算するとき, 行番号9の CALL 命令が実行される回数として正しい答えを,解答群の中から選べ。

解答群

ア 4        イ 5        ウ 10

エ 11       オ 15       カ 16

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

基本情報技術者試験


設問3 関数 F(x, n) は,次のように変形できる。

  F(x, n)=x×(xn−1+xn−2+…+x+1)+1  (n≧1)

 更に次のように,再帰的に表現することができる。

  F(x, 0)=1
  F(x, n)=x×F(x, n−1)+1  (n≧1)

 この再帰表現を実装する,プログラム3の POLY2 を作成した。 プログラム3中の に入れる正しい答えを,解答群の中から選べ。 ここで,POLY2 は POLY と同様に呼ばれる。

〔プログラム3〕
(行番号)

 1  POLY2   START
 2          RPUSH
 3          CALL    RSUB        ; 再帰処理の本体を呼ぶ
 4          RPOP
 5          RET                 ; 主プログラムへ戻る
 6  RSUB    LD      GR1,GR1     ; n=0 ?
 7          JNZ     CONT        ; n≠0 なら CONT ヘ
 8          LD      GR0,=1      ; GR0 ← F(x,0)の値(=1)
 9          RET
1O  CONT    
11          CALL    RSUB        ; F(x, n−1) を計算
12          CALL    MULT
13          ADDL    GR0,=1
14          RET
15          END

解答群

ア LAD  GR1,-1,GR1       イ LAD  GR1,1,GR1

ウ LD  GR1,GR2         エ LD  GR2,GR1

オ POP  GR1           カ PUSH  0,GR1

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

基本情報技術者試験


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

 プログラム3の POLY2 を使用して F(x, 4) を計算するとき, 行番号6のラベル RSUB の行には 回制御が移る。 また,行番号 12 の CALL 命令は 回実行される。

d,e に関する解答群

ア 1        イ 2        ウ 3

エ 4        オ 5        カ 6

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

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


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