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

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

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

 

〔プログラム1の説明〕

 連続する 2 語から成るビット列αの中から,別のビット列βと一致する部分ビット列を 検索する副プログラム BSRH である。部分ビット列の検索の概要を,図1に示す。

 

図1 部分ビット列の検索の概要

 

(1) 主プログラムは,αが格納されている領域の先頭アドレスを GR1 に, βを GR2 に,βの長さ n( 1 ≦ n ≦ 16)を GR3 に設定して副プログラム BSRH を呼ぶ。 βは GR2 に左詰めで設定し,残りのビットには 0 を設定する。

(2) 副プログラム BSRH は, αの先頭(ビット位置 0 )からβと照合し, 一致する部分ビット列がある場合は最初に一致する部分ビット列の先頭のビット位置 p を, 一致する部分ビット列がない場合は −1 を,GRØ に設定して主プログラムに戻る。

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

 

〔プログラム1〕

(行番号)

 1 BSRH   START
 2        RPUSH
 3        LD     GRØ,=-1
 4        LD     GR6,=#FFFF   ; マスク作成
 5        SRL    GR6,Ø,GR3
 6        XOR    GR6,=#FFFF
 7        LD     GR4,Ø,GR1    ; αの取出し
 8        LD     GR5,1,GR1
 9        LD     GR1,=32      ; GR7 ← n
1Ø        SUBA   GR1,GR3      ; GR1 ← 32 - n
11        LD     GR3,GR1      ; GR3 ← 32 - n
12 LP     LD     GR7,GR4
13        AND    GR7,GR6
14        
15        JZE    FOUND        ; 一致あり
16        SUBA   GR1,=1
17        JMI    FIN          ; 一致なし
18        SLL    GR4,1        ; αを1ビット左シフト
19        SLL    GR5,1
2Ø        
21        JUMP   LP
22 NEXT   OR     GR4,=#ØØØ1
23        JUMP   LP
24 FOUND  SUBA   GR3,GR1      ; p の算出
25        LD     GRØ,GR3
26 FIN    RPOP
27        RET
28        END

 

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

 

a に関する解答群 ア AND  GR7,GR2     イ OR  GR7,GR2     ウ SLL  GR7,Ø,GR2

エ SRL  GR7,Ø,GR2    オ XOR  GR7,GR2

 

b に関する解答群 ア JMI  FOUND      イ JMI  NEXT      ウ JOV  FOUND

エ JOV  NEXT      オ JPL  FOUND      カ JPL  NEXT

 

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

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

基本情報技術者試験


設問2   プログラム1の行番号 4 〜 6 を,次の 2 命令で置き換えても,GR6 には同じ値が得られる。 に入れる正しい答えを,解答群の中から選べ。

LD  GR6,=#8ØØØ

 

解答群 ア SLL  GR6,-1,GR3      イ SLL  GR6,Ø,GR3      ウ SRA  GR6,-1,GR3

エ SRA  GR6,Ø,GR3      オ SRL  GR6,-1,GR3      カ SRL  GR6,Ø,GR3

 

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

基本情報技術者試験


設問3   α の先頭から β と照合し,最初に一致する部分ビット列を,β と同じ長さの 別のビット列 γ で置き換える副プログラム BREP を,副プログラム BSRH を 使用して作成した。γ は GR4 に左詰めで設定し,残りのビットには 0 を設定する。 それ以外の BREP の呼出しに関する仕様は,プログラム1の説明中の BSRH を BREP に読み替えて適用する。 プログラム2中の に入れる正しい答えを,解答群の中から選べ。

 

〔プログラム2〕

(行番号)

 1 BREP   START
 2        RPUSH
 3        CALL   BSRH
 4        LD     GR2,CRØ
 5        JMI    FIN
 6        LD     GR6,=#FFFF   ; マスク作成
 7        SRL    GR6,Ø,GR3
 8        XOR    GR6,=#FFFF
 9        LD     GR7,GR3
1Ø        LD     GR3,=16
11        SUBA   GR3,GR2      ; GR3 ← 16 - p
12        JMI    ONL2         ; 一致する部分ビット列が 2 語目だけのとき
13        JZE    ONL2
14        CPA    GR3,GR7      ; (16 - p)と n の比較
15        JMI    NEXT         ; 2 語にまたがる処理
16        JUMP   ONL1         ; 一致する部分ビット列が 1 語目だけのとき
17 NEXT   LD     GR5,GR4      ; γとマスクを退避
18        LD     GR7,GR6
19        CALL   S1           ; 1 語目の処理
2Ø        LD     GR4,GR5
21        LD     GR6,GR7
22        SLL    GR4,Ø,GR3    ; 2 語目用γの調整
23        SLL    GR6,Ø,GR3    ; 2 語目用マスクの調整
24        LAD    GR1,1,GR1
25        CALL   S2           ; 2 語目の最終処理
26        JUMP   FIN
27 ONL1   CALL   S1
28        JUMP   FIN
29 ONL2   
3Ø        SUBA   GR2,GR3      ; GR2 ← p - 16
31        LAD    GR1,1,GR1    ; 操作対象を 2 語目にして,
32        CALL   S1           ; 2 語目の処理
33 FIN    RPOP
34        RET
35 S1     SRL    GR4,Ø,GR2    ; γの調整
36        SRL    GR6,Ø,GR2    ; マスクの調整
37 S2     LD     GR2,Ø,GR1    ; 操作対象語の取出し
38        XOR    GR6,=#FFFF
39        AND    GR2,GR6
4Ø        
41        ST     GR2,Ø,GR1
42        RET
43        END
c に関する解答群 ア ADDL  GR2,GR7       イ LD  GR2,=Ø       ウ LD  GR2,=16

エ LD  GR2,=32        オ SUBA  GR2,GR7

d に関する解答群 ア AND  GR2,GR4       イ OR  GR2,GR4       ウ SLL  GR2,Ø,GR4

エ SRL  GR2,Ø,GR4      オ XOR  GR2,=#FFFF

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

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

基本情報技術者試験


設問4   次の設定でプログラム2を実行したとき,行番号 23 の命令実行直後の GR6 に 格納されている値として正しい答えを,解答群の中から選べ。

 

α: 1 語目  #FFF3
  2 語目  #7FFF
β: (11011)2
n: 5
γ: (11110)2

 

解答群 ア #ØØØ3      イ #ØØØ7       ウ #8ØØØ

コ #CØØØ      オ #EØØØ       カ #FØØØ

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

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