問14 次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜4に答えよ。 [プログラムの説明] 二つの語の内容を交換する副プログラムSWAPと,それを呼び出す主プログラム MAINである。 (1) MAINは,二つの語のアドレスをGR1,GR2に設定して,SWAPを呼ぶ。 (2) SWAPは,GR1,GR2でアドレスが指定された語の内容を交換する。 (3) SWAPから戻るとき,汎用レジスタの内容は呼び出される前の値に復元する。 [プログラム] MAIN START ; DATA1 と DATA2 の交換処理
  GR1,GR2 の設定
  SWAP の呼出し           
(A)
 
          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      
(B)

 
 

	  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