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

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

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

〔プログラムの説明〕

 副プログラム BINS は,次に示すように,ビット列1の左端の部分ビット列 A を ビット列2の指定された位置に挿入する。 m,n はそれぞれビット数を表す。

(1) ビット列1とビット列2の長さは,それぞれ 16 ビット(1語)とする。

(2) GR0 〜 GR3には,それぞれ次の内容が設定されて,主プログラムから渡される。

GR0:ビット列 1

GR1:ビット列2が格納されている語のアドレス

GR2:m

GR3:n

(3) 0 ≦ m < 16,0 ≦ n < 16,m + n ≦ 16 とする。

(4) 部分ビット列 C のはみ出した部分は捨てられる。

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

〔プログラム〕

(行番号)
 1  BINS  START
 2        RPUSH
 3        LD      GR4,GR2
 4        ADDA    GR4,GR3        ; GR4 ←  m + n
 5        LAD     GR5,16
 6        SUBA    GR5,GR2        ; GR5 ← 16 − m
 7        LAD     GR6,16
 8        SUBA    GR6,GR4        ; GR6 ← 16−(m + n)
 9        LAD     GR2,16
10        SUBA    GR2,GR3        ; GR2 ← 16 − n
11        LD      GR7,0,GR1      ; GR7 ← ビット列 2
12        SRL     GR7,0,GR2
13        SLL     GR7,0,GR2      ; 部分ビット列 C をすべて 0 にする
14        SRL     GR0,0,GR5
15         ; 部分ビット列 A を挿入位置に移動
16        OR      GR7,GR0
17        LD      GR2,0,GR1      ; ビット列2の元の内容
18        SLL     GR2,0,GR3
19         ; 部分ビット列 C を結果の位置に移動
20        OR      GR7,GR2
21        ST      GR7,0,GR1
22        RPOP
23        RET
24        END

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

解答群

ア SLL  GR0,0,GR2    イ SLL  GR0,0,GR4

ウ SLL  GR0,0,GR5    エ SLL  GR0,0,GR6

オ SRL  GR2,0,GR3    カ SRL  GR2,0,GR4

キ SRL  GR2,0,GR5    ク SRL  GR2,0,GR6

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

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

基本情報技術者試験


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

 主プログラムから渡されたビット列 1,ビット列 2,m,n の内容が次のとおりのとき, 行番号 16 の OR 命令実行直前の GR7 の内容は で, GR0 の内容は である。

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

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

基本情報技術者試験


設問3 副プログラム BINS を使用して,次に示すように, 部分ビット列 A を長さが 32 ビット(2語)のビット列2に挿入する 副プログラム BINSL を作成した。

主プログラムから渡されるレジスタの内容は,次のとおりとする。

GR0:ビット列 1

GR1:ビット列2が格納されている領域の先頭アドレス

GR2:m

GR3:n

なお,0 ≦ m < 16,0 ≦ n <32,m + n ≦ 32 とする。

 副プログラム BINSL 中の に入れる正しい答えを, 解答群の

中から選べ。

BINSL  START
       RPUSH
       CPA     GR3,=15         ; n ≧ 16 ?
       JPL     RIGHT           ; YES
       LD      GR7,0,GR1       ; ビット列2の第1語を退避
       LD      GR5,GR2
       ADDA    GR5,GR3         ; GR5 ← m + n
       CPA     GR5,=17         ; m + n ≦ 16 ?
       JMI     LEFT            ; YES
       LAD     GR2,16
       SUBA    GR2,GR3
       LD      GR6,GR0         ; 部分ビット列 A のはみ出す部分を
       SLL     GR6,0,GR2       ;   左端に寄せてビット列1を退避
LEFT   CALL    BINS            ; 部分ビット列 A をビット列2に挿入
       LAD     GR1,1,GR1       ; GR1 ← ビット列2の第2語のアドレス
       LAD     GR3,16
       
       LD      GR0,GR7         ; ビット列2の第1語のはみ出した部分を
       SLL     GR0,0,GR3       ;   左端に寄せる
       LAD     GR3,0           ; n ← 0
       CALL    BINS            ; はみ出したビット列を第2語に挿入
       LD      GR2,GR5
       SUBA    GR2,=16         ; m ←(m + n)− 16
       JMI     FIN
       LD      GR0,GR6         ; 部分ビット列 A のはみ出す部分を
       CALL    BINS            ;   第2語に挿入
       JUMP    FIN
RIGHT  
       LAD     GR1,1,GR1       ; GR1 ← ビット列2の第2語のアドレス
       CALL    BINS
FIN    RPOP
       RET
       END

解答群

ア ADDA  GR2,GR3     イ ADDA  GR3,GR2

ウ LAD  GR2,-16,GR3    エ LAD  GR2,-16,GR5

オ LAD  GR3,-16,GR3    カ LAD  GR3,-16,GR5

キ SUBA  GR2,GR3      ク SUBA  GR3,GR2

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

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


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