平成18年 秋期 基本情報技術者 午後 問09
問09 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラムの説明〕 2語の中にあるビット列を結合してレジスタに設定する副プログラム COMBINE と, レジスタ中のビット列を分割して2語に格納する副プログラム DIVIDE である。 (1) 図1にCOMBINE と DIVIDE のデータ形式と結果を示す。 ただし, m + n ≦ 16である。
図1 COMBINEとDIVIDEのデータ形式と結果 (2) COMBINE は,GR1 〜 GR4 にそれぞれ次の内容が設定されて主プログラムから呼ばれる。 GR1:C1 のアドレス GR2:C1 のビット列の長さ( m ) GR3:C2 のアドレス GR4:C2 のビット列の長さ( n ) (3) COMBINE は,結合した m + n ビットを GR0 に左詰めで設定し, 残りのビットには0を設定する。 (4) DIVIDE は,GR0 〜 GR4 にそれぞれ次の内容が設定されて主プログラムから呼ばれる。 GR0:分割するビット列 GR1:D1 のアドレス GR2:D1 に格納するビット列の長さ( m ) GR3:D2 のアドレス GR4:D2 に格納するビット列の長さ( n ) (5) DIVIDE は,D1 には m ビットを,D2 には n ビットを それぞれ左詰めで格納し,残りのビットには0を格納する。 (6) COMBINE 及び DIVIDE から戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。
〔プログラム1〕 COMBINE START RPUSH LD GR0,0,GR1 LD GR5,=16 SUBL GR5,GR2 ; 16− m ; 左側 m ビット以外のビットを 0 にする。 SLL GR0,0,GR5 ; ” ; LD GR6,0,GR3 LD GR7,=16 SUBL GR7,GR4 ; 16− n SRL GR6,0,GR7 SUBL GR5,GR4 ; 16− m− n OR GR0,GR6 RPOP RET END 〔プログラム2〕 DIVIDE START RPUSH LD GR5,GR0 LD GR6,=16 SUBL GR6,GR2 ; 16− m SRL GR0,0,GR6 SLL GR0,0,GR6 ST GR0,0,GR1 ←α ; SUBL GR6,GR4 ; 16− m− n LD GR6,=16 SUBL GR6,GR4 ; 16− n SLL GR5,0,GR6 ST GR5,0,GR3 ←β RPOP RET END 設問1 プログラム1及びプログラム2中の に入れる正しい答えを,解答群の中から選べ。
解答群 ア SLL GR5,0,GR6 イ SLL GR6,0,GR5 ウ SRL GR0,0,GR5 エ SRL GR0,0,GR6 オ SRL GR5,0,GR6 カ SRL GR6,0,GR5
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。 DIVIDE において,データを格納しない部分は元の内容を保持したままとするためには, プログラム2 中のα,βの部分を次のように変更する必要がある。 図2に変更後のデータ形式と結果を示す。
解答群 ア AND GR6,0,GR1 イ AND GR6,0,GR2 ウ AND GR7,0,GR1 エ AND GR7,0,GR2 オ OR GR5,GR6 カ OR GR5,GR7 キ OR GR7,GR5 ク OR GR7,GR6
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ] | ||||||