問14 次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜4に答えよ。 [プログラムの説明] 二つの語の内容を交換する副プログラムSWAPと,それを呼び出す主プログラム MAINである。 (1) MAINは,二つの語のアドレスをGR1,GR2に設定して,SWAPを呼ぶ。 (2) SWAPは,GR1,GR2でアドレスが指定された語の内容を交換する。 (3) SWAPから戻るとき,汎用レジスタの内容は呼び出される前の値に復元する。 [プログラム] MAIN START ; DATA1 と DATA2 の交換処理
GR1,GR2 の設定 SWAP の呼出し
EXIT DATA1 DC 100 DATA2 DC 200 END ;-------------------------------------------------- SWAP START PUSH 0,GR3 ; ┐ ST GR0,WORK ; ├ レジスタの保存 LD GR3,WORK ; │ (GR0,GR3) PUSH 0,GR3 ; ┘
LD GR0,0,GR1 LD GR3,0,GR2 ST GR3,0,GR1 ST GR0,0,GR2
POP GR0 POP GR3 RET WORK DS 1 END 設問1 DATA1とDATA2を交換するには,SWAPをどのように呼べばよいか。枠(A)に 入れる正しい答えを,解答群の中から選べ。 解答群 ア LD GR1,DATA1 イ PUSH 0,GR1 LD GR2,DATA2 PUSH 0,GR2 CALL SWAP CALL SWAP ウ LEA GR1,DATA1 エ ST GR1,DATA1 LEA GR2,DATA2 ST GR2,DATA2 CALL SWAP CALL SWAP 答ウ 設問2 枠(B)と入れ換えても同じ結果が得られるものはどれか,正しい答えを 解答群の中から選ベ。 解答群 ア LD GR0,0,GR1 イ LD GR3,0,GR2 ウ LD GR3,0,GR2 ST GR0,0,GR2 ST GR0,0,GR2 ST GR3,0,GR1 LD GR3,0,GR2 LD GR0,0,GR1 LD GR0,0,GR1 ST GR3,0,GR1 ST GR3,0,GR1 ST GR0,0,GR2 エ LD GR0,0,GR1 オ LD GR0,0,GR1 ST GR3,0,GR1 LD GR3,0,GR2 LD GR3,0,GR2 ST GR0,0,GR2 ST GR0,0,GR2 ST GR3,0,GR1 答オ 設問3 SWAPを次のように書き直したとき,書直しの前後における実行時間の変化に ついての正しい記述を,解答群の中から選ベ。ここでは,レジスタアクセスだけを 含む命令の処理時間を命令の取出しも含めて1単位時間とし,主記憶へのアクセスを 含む命令は10単位時間とする。 SWAP START PUSH 0,GR3 LD GR3,0,GR1 ST GR3,WORK LD GR3,0,GR2 ST GR3,0,GR1 LD GR3,WORK ST GR3,0,GR2 POP GR3 RET WORK DS 1 END 解答群 ア 変わらない イ 2単位時間増える ウ 11単位時間増える エ 20単位時間増える オ 2単位時間減る カ 11単位時間減る キ 20単位時間減る 答キ 設問4 SWAPを,WORKを使わないで次のように書き直したとき,“PUSE 0,GR3”命 令がもう一つ足りないことがわかった。この命令をどの行番号の直前に挿入すれ ばよいか,正しい行番号を解答群の中から選ベ。 (行番号) 01 SWAP START 02 PUSH 0,GR3 03 LD GR3,0,GR1 04 LD GR3,0,GR2 05 ST GR3,0,GR1 06 POP GR3 07 ST GR3,0,GR2 08 POP GR3 09 RET 10 EMD 解答群 ア 03 イ 04 ウ 05 エ 06 オ 07 答イ