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

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

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

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

 非負整数 n について,階乗の値 F(n) を求める副プログラム FACT である。

F(n) = 1 (n=0,1)
F(n) = n × (n−1)×…× 1 ( n ≧ 2)
 例えば,F(3)= 3 × 2 × 1 = 6 である。

(1) FACT は,n が GR1 に設定されて呼ばれ,計算結果を GRØ に設定して呼出し元に戻る。 n は,F(n) の値が 16 ビット符号なし2進整数の範囲に収まるように与えられる。 FACT は副プログラム MULT を利用する。

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

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

〔プログラム1]

(行番号)

 1  FACT    START
 2          RPUSH
 3          LD     GRØ,=1
 4          SUBL   GR1,=1
 5          
 6          JUMP   FIN
 7  NEXT    LD     GR2,=1
 8  LP      LAD    GR2,1,GR2
 9          CALL   MULT
1Ø          
11          JNZ    LP
12  FIN     RPOP
13          RET
14          END
〔プログラム2〕
MULT    START            ; シフトによる乗算
        RPUSH
        LD     GR1,GRØ   ; 被乗数を GR1 に保持
        LD     GRØ,=Ø    ; 乗算結果の初期化

LD GR3,=15 LD GR2,GR2 LP JZE FIN JPL CONT LD GR4,GR1 ADDL GRØ,GR4 CONT LAD GR3,-1,GR3 SLL GR2,1 JUMP LP FIN RPOP RET END

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

a に関する解答群

ア JMI  NEXT     イ JNZ  NEXT     ウ JOV  NEXT

エ JPL  NEXT     オ JZE  NEXT

b に関する解答群 ア ADDL  GR1,=1     イ LAD  GR1,1,GR1     ウ LD  GR1,GR1

エ SRL  GR1,1     オ SUBL  GR1,=1

c に関する解答群

ア SLL  GRØ,Ø,GR3     イ SLL  GR1,Ø,GR3     ウ SLL  GR4,Ø,GR3

エ SRL  GRØ,Ø,GR3     オ SRL  GR1,Ø,GR3     カ SRL  GR4,Ø,GR3

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

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

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

基本情報技術者試験


設問2 プログラム1の FACT を使用して F(4) を求めるとき,行番号 12 の RPOP 命令 実行直前の GR2 に設定されている値として正しい答えを,解答群の中から選べ。

解答群

ア 1        イ 2        ウ 3        エ 4        オ 5
解答 ←クリックすると正解が表示されます

基本情報技術者試験


設問3 F(n) は次のように再帰的に表現することができる。

F(n)= 1 (n=0,1)
F(n)= n × F(n−1) ( n ≧ 2 )
 上記に基づいて,プログラム3の FACT2 を作成した。ここで,FACT2 は FACT と同様に呼ばれる。 また,FACT2 に制御が移り,行番号 2 の RPUSH 命令を実行した直後の SP の値を B とする。

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

 FACT2 を使用して F(3) を求めるとき,行番号 11 の命令を 初めて実行した直後の SP の値は である。 また,当該 SP で示される番地に格納されている値は である。

〔プログラム3〕

(行番号)

 1  FACT2    START
 2           RPUSH
 3           CALL     RSUB         ; 再帰処理の本体を呼ぶ
 4           RPOP
 5           RET                   ; 主プログラムヘ戻る
 6  RSUB     LD       GR4,GR1
 7           SUBL     GR4,=1
 8           JPL      NEXT         ; n≧2 の場合 NEXT ヘ
 9           LD       GRØ,=1       ; GRØ ← F(Ø),F(1) の値
1Ø           RET
11  NEXT     PUSH     Ø,GR1
12           LAD      GR1,-1,GR1
13           CALL     RSUB         ; F(n−1) を計算
14           POP      GR2
15           CALL     MULT
16           RET
17           END
d に関する解答群 ア B + 1        イ B + 2        ウ B

エ B - 1        オ B - 2

e に関する解答群

ア 1

イ 2

ウ 3

エ 行番号 4 の命令が置かれたアドレス

オ 行番号 14 の命令が置かれたアドレス

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

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


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