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

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

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

〔プログラムの説明〕

(1) 副プログラム BREP は,16 ビットからなるビット列 A の中に, n ビットの ビット列 B と一致する部分ビット列があれば,それを n ビットのビット列 C に置き換えるプログラムである。

例:

@ GR1 〜 GR4 にはそれぞれ次の内容を設定して,主プログラムから渡される。

GR1:ビット列 A を格納している語のアドレス

GR2:ビット列 B(左詰めで設定され,残りのビットには0が設定されている。)

GR3:ビット列 C(左詰めで設定され,残りのビットには0が設定されている。)

GR4: n ( 1 ≦ n ≦ 16)

A ビット列Aの中にビット列 B に一致する部分ビット列が複数個あれば, それらのすべてをビット列 C に置き換える。

B ビット列 A の左端から検索する。 ビット列 B に一致する部分ビット列をビット列 C に置き換えた場合, その部分ビット列の右隣のビットから検索を続ける。

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

(2) 副プログラム ROTSL は,16 ビットからなるビット列を m ビットだけ左に 循環シフトするプログラムである。

例:

@ GR0 と GR1 にはそれぞれ次の内容を設定して,主プログラムから渡される。

GR0: m ( 0 ≦ m ≦ 16)

GR1:ビット列を格納している語のアドレス

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

〔プログラム〕

BREP  START
      RPUSH
      LD    GR5,=16         ; 未検査ビット数の初期化
      LD    GR6,=#8000      ; 
      SRA   GR6,-1,GR4      ; 
LOOP  LD    GR7,0,GR1       ; GR7 ←ビット列 A
         ; 左端 n ビット以外のビットを 0 にする。
      CPL   GR7,GR2         ; 左端 n ビットとビット列 B を比較
      JZE   MATCH           ; 一致
      LD    GR0,=1          ; 左循環シフトするビット数
      JUMP  CONT
MATCH LD    GR7,0,GR1       ; GR7←ビット列 A
      SLL   GR7,0,GR4       ;   
      SRL   GR7,0,GR4       ;
         ; ビット列 C を左端 n ビットに設定
      ST    GR7,0,GR1       ; 元の領域に戻す。
      LD    GR0,GR4         ; 左循環シフトするビット数
CONT  CALL  ROTSL           ; ビット列 A を左循環シフト
      SUBA  GR5,GR0         ; 未検査ビット数の更新
      CPA   GR5,GR4         ; 未検査ビット数と n を比較
         ;  n 未満であれば終了処理へ
      JUMP  LOOP
FIN   LD    GR0,GR5         ; 未検査ビット数
      CALL  ROTSL           ; ビット位置を元に戻す。
      RPOP
      RET
;
ROTSL RPUSH
      LD    GR3,GR0         ; GR3← m
      LD    GR4,=16
      SUBA  GR4,GR3         ; GR4←(16−m)
      LD    GR5,0,GR1
      LD    GR6,GR5
      SLL   GR5,0,GR3
         ; はみ出すビット列
      OR    GR5,GR6         ; はみ出すビット列を右端に設定
      ST    GR5,0,GR1       ; 元の領域に戻す。
      RPOP
      RET
      END

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

a,b に関する解答群

ア AND  GR7,GR3    イ AND  GR7,GR6

ウ OR   GR7,GR3    エ OR   GR7,GR6

c に関する解答群

ア JMI  FIN      イ JNZ  FIN

ウ JPL  FIN      エ JZE  FIN

d に関する解答群

ア SLL  GR6,0,GR3    イ SLL  GR6,0,GR4

ウ SRL  GR6,0,GR3    エ SRL  GR6,0,GR4

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

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

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

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

基本情報技術者試験


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

 主プログラムから渡されたビット列 A,B,C 及び n が次のとおりであったとき, 副プログラム BREP は副プログラム ROTSL を 回呼び出す。

ビット列 A:  0001110100111001

ビット列 B:  0111

ビット列 C:  1001     n :  4

解答群

ア 2      イ 6      ウ 8      エ 12      オ 16

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

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