東京理科大学 infoserv[更新日]2000.10.23


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

〔プログラムの説明〕

指定された 1 語中に,指定されたビットパターンと一致するビット列が重複せずに 幾つあるかを検索する副プログラム BPSRCH と,それを呼び出す主プログラム MAIN である。 図 1 に BPSRCH の入出力の関係を示す。 図 1 では“011”の 3 ビットからなるビットパターンを検索している。


図1 入出力の関係

 

(1) MAIN は GR1 にパラメタの先頭番地を格納して BPSRCH を呼ぶ。 パラメタの内容は,図 2 のとおりである。


図2 パラメタの内容

 

(2) BPSRCH は,検索結果を GR0 に格納する。

(3) BPSRCH から戻るとき,汎用レジスタ GR2,GR3 の内容を元に戻す。

〔プログラム〕

(行番号)

01 MAIN    START
02         LEA    GR1,PARAM
03         CALL   BPSRCH
04         EXIT
05 PARAM   DC     #CDEF
06         DC     #0003
07         DC     2
08 BPSRCH  PUSH   0,GR2
09         PUSH   0,GR3
10         LEA    GR3,16
11         SUB    GR3,2,GR1
12         LD     GR2,1,GR1
13         SLL    GR2,0,GR3
14         ST     GR2,SRCHP           ; 検索するパターンを格納する
15         LEA    GR2,-1
16         SLL    GR2,0,GR3
17         ST     GR2,MASKP           ; マスクパターンを格納する
18         LEA    GR3,0
19         LEA    GR0,0
20         LD     GR2,0,GR1           ; パターンを検索する
21 LOOP    ADD    GR3,2,GR1
22         CPA    GR3,MAXP
23         JPZ    RESULT
24         PUSH   0,GR2
25         AND    GR2,MASKP
26         CPL    GR2,SRCHP           ; パターンを比較する
27         JNZ    NEXT
28         ADD    GR0,ONE
29         POP    GR2
30         PUSH   0,GR3
31         LD     GR3,2,GR1
32         SLL    GR2,0,GR3
33         POP    GR3
34         JMP    LOOP
35 NEXT    SUB    GR3,2,GR1
36         LEA    GR3,1,GR3
37         POP    GR2
38         SLL    GR2,1
39         JMP    LOOP
40 RESULT  POP    GR3 
41         POP    GR2
42         RET
43 ONE     DC     1
44 MASKP   DS     1
45 SRCHP   DS     1
46 MAXP    DC     17
47         END
設問1   次の記述中の に入れる値として正しい答えを, 解答群の中から選べ。解答は,重複して選んでもよい。

プログラムの行番号 03 を実行して主プログラムに戻ったときの GR0 の値は ,MASKP の値は ,SRCHP の値は である。

a に関する解答群

ア 3    イ 4    ウ 5    エ 6    オ 7    カ 8

b,c に関する解答群

ア #1000   イ #3FFF   ウ #4000

エ #5FFF   オ #6000   カ #A000

キ #B000   ク #C000

設問2   図 2 のパラメタの“検索するビットパターン”を左詰めに変更することに よって副プログラム BPSRCH 中で不要になる命令の行番号を,解答群の中から選べ。

解答群

ア 11    イ 13    ウ 16    エ 22    オ 26

設問3   BPSRCH の行番号 29 〜 39 を次のように変更して,主プログラム MAIN を実行した。 プログラムの行番号 03 を実行して主プログラムに戻ったときの GR0 の値として正しい答えを, 解答群の中から選べ。

NEXT POP GR2

SUB GR3,2,GR1

LEA GR3,1,GR3

SLL GR2,1

JMP LOOP

解答群

ア 3    イ 4     ウ 5     エ 6

オ 7    カ 8     キ 9     ク 10


東京理科大学 infoserv 戻る 次頁:問15