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

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

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

〔プログラムの説明〕

1語の中から指定されたビットパターンを検索する副プログラム BPSRH である。

(1) 主プログラムは,パラメタ領域の先頭番地を GR1 に設定して,BPSRH を呼ぶ。 パラメタの形式は次のとおりである。

(2) BPSRH は,検索対象語の上位ビットからビットパターンと照合し, 最初に一致した部分の最上位のビット番号を GR0 に設定して主プログラムに戻る。 一致した部分がない場合は,−1 を GR0 に設定して主プログラムに戻る。 次の例では,GR0には,一致した部分の最上位のビット番号 12 が設定される。

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

〔プログラム〕

(行番号)
 1  BPSRH  START
 2         RPUSH
 3         LD    GR6,1,GR1
 4         LAD   GR7,16
 5         SUBA  GR7,GR6    ; GR7 ←(16 − n)
 6         LD    GR2,2,GR1
 7         SLL   GR2,0,GR7  ; ビットパターンを左詰めに
 8         LAD   GR4,-1
 9          ; マスクパターンの生成
10         LAD   GR0,-1     ; 戻り値の初期化
11         LAD   GR3,0      ; 照合位置ポインタの初期化
12         LD    GR5,0,GR1
13  LOOP   LD    GR6,GR5    ; GR6 は作業用として使用
14         AND   GR6,GR4
15         CPL   GR6,GR2    ; ビットパターンとの照合
16         JZE   FIND   
17         LAD   GR3,1,GR3  ; 次の照合位置を設定
18         CPA   GR3,GR7    ; 未照合部分が n ビット以上あるか?
19         JPL   EXIT
20         
21         JUMP  LOOP
22  FIND   LAD   GR0,15     ; ビット番号の算出
23         SUBA  GR0,GR3
24  EXIT   RPOP
25         RET
26         END

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

a に関する解答群

ア SLL GR4,0,GR6    イ SLL GR4,0,GR7

ウ SRA GR4,0,GR6    エ SRA GR4,0,GR7

オ SRL GR4,0,GR6    カ SRL GR4,0,GR7

b に関する解答群

ア LD GR5,1,GR2    イ SLL GR3,1

ウ SLL GR5,1      エ SRL GR3,1

オ SRL GR5,0,GR2    カ SRL GR5,0,GR3

キ SRL GR5,1

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

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

基本情報技術者試験


設問2 次のパラメタが渡され,ラベル FIND に制御が移ったときの, GR5 の値の 16 進表記として正しい答えを,解答群の中から選べ。

解答群

ア 000D       イ 1AD6       ウ AD60

エ D000       オ D6B0

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

基本情報技術者試験


設問3 1 の連続するビットパターンに特化した検索を行う副プログラム BP1SRH を 使用して,映画館の指定席を予約する副プログラム RESERVE を作成した。
 RESERVE 中の に入れる正しい答えを,解答群の中から選べ。

(1) 映画館の指定席は 1,024 席あり,座席番号は 0 〜 1023 である。 また,指定席は座席番号順に 16 席ごとにグループ化されている。 指定席管理表は連続する 64 語からなり,先頭の語のビット番号 15 が座席番号 0 の状態を, 末尾の語のビット番号 0 が座席番号 1023 の状態を表す。 指定席管理表の対応するビットが 1 のとき空席を,0 のとき予約済を表す。

    図 指定席管理表( 64 語)の形式

(2) 主プログラムは,予約すべき席数 n( 1 ≦ n ≦ 16 )を GR1 に, 指定席管理表の開始アドレスを GR2 に設定して,RESERVE を呼ぶ。

(3) RESERVE は,指定された数の席を連続して,かつグループをまたがらないで確保する。 座席番号 0 から順に空席を探し,見つかれば“予約済”の状態にして, 確保された一番若い番号の座席番号を GR0 に設定し,主プログラムに戻る。 確保できなければ,−1 を GR0 に設定して主プログラムに戻る。

(4) RESERVE から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。

(5) BP1SRH に与えるパラメタは,次の形式とする。

BP1SRH は,BPSRH の行番号 6 〜 9 を次の三つの命令で置き換えたプログラムである。
LAD  GR2,#8000
SRA  GR2,-1,GR6
LD   GR4,GR2

〔プログラム〕

RESERVE START
        RPUSH
        LD    GR6,GR1     ; n の保存
        LAD   GR1,PARAM
        ST    GR6,1,GR1   ; BP1SRH 呼出しパラメタ準備 (1)
        ST    GR2,TBLADD  ; 指定席管理表の開始アドレス保存
        LAD   GR4,64,GR2
        LAD   GR0,-1      ; 戻り値の初期化
LOOP    CPL   GR2,GR4     ; 検索終了?
        JZE   EXIT    
        LD    GR5,0,GR2   ; 指定席管理表から1語取出し
        ST    GR5,0,GR1   ; BP1SRH 呼出しパラメタ準備 (2)
        CALL  BP1SRH      ; 1語中の空席を検索
        CPA   GR0,=-1
        JNZ   FIND
        LAD   GR2,1,GR2   ; 次の語を検索へ
        JUMP  LOOP
FIND    LAD   GR3,15
        SUBA  GR3,GR0     ; GR3 ←(15 − GR0)
        LAD   GR7,#8000
        SRA   GR7,-1,GR6
        
        XOR   GR7,=#FFFF  ; GR7 ← 1110000111111111(GR0=12,n=4 の場合)
        AND   GR5,GR7     ; 予約済に設定
        ST    GR5,0,GR2
        SUBL  GR2,TBLADD  ; 座席番号の算出
        
        ADDA  GR2,GR3
        LD    GR0,GR2
EXIT    RPOP
        RET
TBLADD  DS    1
PARAM   DS    2           ; BP1SRH 呼出し用パラメタ領域
        END

c に関する解答群

ア AND GR5,GR3     イ AND GR5,GR7

ウ OR GR5,GR3     エ OR GR5,GR7

オ SRA GR7,0,GR3    カ SRL GR7,0,GR3

d に関する解答群

ア SLL GR2,1     イ SLL GR2,2

ウ SLL GR2,4     エ SLL GR3,1

オ SLL GR3,2     カ SLL GR3,4

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

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


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