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

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

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

〔プログラムの説明〕

 副プログラム EXPAND は,図1の形式で GR0 に与えられるパターン(ビット列)を, 指定された語( GR1 が指す語)の開始ビット位置( GR2 )以降の領域に展開し, 展開したビット列の長さを GR0 に設定するプログラムである。 指定された語の開始ビット位置までのデータは変更せず,最後の語の残りビットには 0 を入れる。


       図1 データ形式と展開

5 ビットのパターン 10110 をビット位置 4 を開始ビット位置として8回繰り返し, 40 ビットのビット列に展開した例を,図2 に示す。


       図2 展開の例

(1) 主プログラムは,汎用レジスタに次のデータを設定して,EXPAND を呼ぶ。

GR0:展開するデータ

GR1:展開する領域の先頭アドレス

GR2:開始ビット位置( 0 〜 15 )

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

〔プログラム〕

(行番号)
 1  EXPAND   START
 2           RPUSH
 3           ST    GR1,ADR         ; アドレスを格納する
 4           ST    GR2,BP          ; 開始ビット位置を格納する
 5           LD    GR3,GR0
 6           SLL   GR3,8           ; パターン抽出
 7           LD    GR4,GR0
 8           AND   GR4,=#0700
 9           SRL   GR4,8
10           LAD   GR4,1,GR4       ; パターンの長さ
11           LD    GR5,GR0
12           AND   GR5,=#F800
13           SRL   GR5,11
14           LAD   GR5,1,GR5       ; 繰返し数
15  LOOP     LD    GR7,=#FFFF
16           SRL   GR7,0,GR2
17           XOR   GR7,=#FFFF
18           AND   GR7,0,GR1       ; パターンを格納する領域をクリアする
19           LD    GR6,GR3
20           SRL   GR6,0,GR2
21              ; パターンを設定する
22           ST    GR6,0,GR1       ; パターンを格納する
23           ADDL  GR2,GR4
24           CPA   GR2,=16         ; 位置+長さ < 16 ?
25           JMI   CRPT
26           LAD   GR1,1,GR1       ; 次の領域アドレスを設定する
27              ; 次の開始位置を設定する
28           JZE   CRPT
29           LD    GR7,GR4         ; パターンが残っているとき
30           SUBA  GR7,GR2         ;   パターンの残りを
31           LD    GR0,GR3         ;     次の語に
32           SLL   GR0,0,GR7       ;       格納する
33           ST    GR0,0,GR1       ;
34  CRPT     LAD   GR5,-1,GR5      ; 繰返し数を更新する
35           LD    GR5,GR5
36           JNZ   LOOP
37           SUBL  GR1,ADR         ;
38           SLL   GR1,4           ; 展開したビット列の
39           ADDA  GR1,GR2         ;   長さを計算する
40           SUBA  GR1,BP          ;
41           LD    GR0,GR1         ; 
42           RPOP
43           RET
44  ADR      DS    1               ; アドレスを格納する領域
45  BP       DS    1               ; 開始ビット位置を格納する領域
46           END

基本情報技術者試験


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

解答群

ア ADDA  GR2,=15    イ ADDA GR2,=16    ウ AND  GR6,GR2

エ AND  GR6,GR7    オ OR  GR6,GR2    カ OR  GR6,GR7

キ SUBA  GR2,=15    ク SUBA GR2,=16

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

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

基本情報技術者試験


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

GR0 に #0EFE を格納して EXPAND を呼んだとき, 行番号 14 を実行した後の GR3の内容は , GR5 の内容は である。

解答群

ア 1       イ 2       ウ 3

エ #00FE     オ #FE00     カ #FF00

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

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

基本情報技術者試験


設問3 ラベル PTBL 以降の5語に格納されている五つの展開するデータを, EXPAND を使用して UPTBL の先頭から展開する主プログラムを作成した。
 次のプログラム中の に入れる正しい答えを, 解答群の中から選べ。

(行番号)
 1  MAIN      START
 2            LAD     GR1,UPTBL    ; 展開する領域アドレスを設定する
 3            LAD     GR2,0        ; 開始位置を設定する
 4            LAD     GR3,0        ; 展開するデータのカウンタを0にする
 5  MLOOP     LD      GR0,PTBL,GR3 ; 展開データを準備する
 6            CALL    EXPAND       
 7            ADDA    GR2,GR0
 8            LD      GR4,GR2
 9            SRL     GR4,4
10            ADDL    GR1,GR4      ; 次の展開する領域アドレスを設定する
11              ; 次の開始位置を設定する
12            LAD     GR3,1,GR3    ; カウンタを進める
13              ; 終了か?
14            JMI     MLOOP
15            RET
16  PTBL      DC      #FFFF,#0700,#FFFF,#0700,#FFFF
17  UPTBL     DS      80
18            END

解答群

ア ADDL  GR2,=#000F     イ ADDL  GR3,=#000F

ウ AND   GR2,=#000F     エ AND   GR3,=#000F

オ CPA   GR2,=4       カ CPA   GR2,=5

キ CPA   GR3,=4       ク CPA   GR3,=5

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

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

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