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

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

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

〔プログラムの説明〕

ある商店の在庫状況を記録した在庫表から,商品番号をキーとして, 商品の在庫量を2分探索法で検索する副プログラム BSEARCH である。

(1) 在庫表は,先頭に扱い商品数 N,その後ろに商品番号とその商品の在庫量の 対を商品番号順(昇順)に格納したものである。 扱い商品数,商品番号,在庫量は,それぞれ 0 以上の整数値で1語に格納されている。

在庫表の様式

 N    商品番号[1]    在庫量[1]    商品番号[2]    在庫量[2]    …    商品番号[N]    在庫量[N]  

(2) 主プログラムは,商品番号(検索キー)を GR1 に,在庫表の先頭アドレスを GR2 に設定し,BSEARCH を呼ぶ。

(3) BSEARCH は,検索キーに対応する在庫量を GR0 に設定し,主プログラムに戻る。 該当する商品番号が在庫表に存在しない場合は,−1 を GR0 に設定し,主プログラムに戻る。

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

〔プログラム〕

(行番号)

 1   BSEARCH   START
 2             RPUSH
 3             LAD   GR3,1        ;  左端標識 LT の初期設定
 4             LD    GR4,0,GR2    ;  右端標識 RT の初期設定
 5             LAD   GR2,-1,GR2   ;  表の基底アドレス
 6             LAD   GR0,-1       ;  戻り値の初期設定
 7   SLOOP     CPL   GR3,GR4      ;  LT > RT ?
 8             JPL   EXIT
 9             LD    GR5,GR3      ;  LT,RTの中央の位置 MID の計算
10             ADDL  GR5,GR4      ;     ”
11                ;     ”
12             LD    GR6,GR5      ;  商品番号 [MID] のアドレス計算
13             SLL   GR6,1        ;     ”
14             ADDL  GR6,GR2      ;     ”
15             CPL   GR1,0,GR6    ;  KEY = 商品番号[MID] ?	
16             JZE   FIND
17             
18             LAD   GR3,1,GR5    ;  MID+1 → LT
19             JUMP  SLOOP
20   RTSET     LAD   GR4,-1,GR5   ;  MID-1 → RT
21             JUMP  SLOOP
22   FIND      LD    GR0,1,GR6 
23   EXIT      RPOP
24             RET
25             END

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

a に関する解答群

ア LAD GR5,1,GR5    イ LAD GR5,2,GR5    ウ SLL GR5,1 

エ SLL GR5,2      オ SRL GR5,1

b に関する解答群

ア JMI RTSET     イ JMI SLOOP       ウ JPL RTSET

エ JPL SLOOP     オ LAD GR2,1,GR2     カ LD GR5,GR6

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

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


設問2 GR1 と GR2 を次のように設定して副プログラム BSEARCH を 呼び出したとき,行番号 20 の命令は何回実行されるか,正しい答えを,解答群の中から選べ。

解答群

ア 0    イ 1    ウ 2    エ 3    オ 4

カ 7    キ 8

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

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