平成6年度 秋期 第二種 午後 問14

                        [更新日]1999.04.12
問14 次のアセンブラプログラムの説明及びプログラムを読んで、設問1〜5に答えよ。 [プログラムの説明] このプログラムは、メモリブロックを転送するための副プログラムである。 (1) この副プログラムは、初心者が作成し、初版であるため、単純な記述の誤り及び プログラムの冗長さ等を含んでいる。 (2) 主プログラムは、転送元ブロックの先頭アドレスをGR1に、転送先ブロックの 先頭アドレスをGR2に、転送するブロックの語数をGR3に設定してこの副プログラ ムを呼ぶ。 これらのアドレスと語数を、各々 SA, DA, S と略記する。 (3)この副プログラムから戻るとき、汎用レジスタGR1〜GR3の内容は、元の値に 復元する。 設問1 この副プログラムには、行番号 210, 220, 280, 290 のいずれか一つの行に 誤りがある。訂正後の正しい行内容を解答群の中から選べ。 解答群 ア 210 LEA GR1,-1,GR1 イ 220 LEA GR2,-1,GR2 ウ 280 BRTNL LEA GR1,-1,GR1 エ 290 LEA GR2, 1,GR2 設問2 ラベルBRTNに実行制御が移るのはどのような場合か、正しい答えを解答 群の中から選べ。 解答群 ア DA < SA かつ DA + S ≦ SA イ DA < SA かつ DA + S > SA ウ DA ≧ SA かつ SA + S ≦ DA エ DA ≧ SA かつ SA + S > DA 設問3 プログラムの冗長さを除き改良を試みる。次の命令のオペランドを変更して 効率化を図る場合、最も効率的な飛び先はどこか、正しい答えを解答群の中か ら選べ。 060 JMI ACHK  ̄ ̄ 解答群 ア ARTN イ BRTN ウ ARTNL エ BRTNL 設問4 設問1の訂正を行って実行したところ、パラメタの与え方によっては不具合 が発生した。これはどのような条件のときか、正しい答えを解答群の中から選 べ。 解答群 ア S=0 イ DA=SA+S ウ DA=SA エ SA=DA+S 設問5 DAとSAが等しい場合は、本来転送する必要はない。この場合を検出する ために、ある行の前に次の命令を挿入したい。その行の番号を解答群の中から 選べ。 JZE PEND 解答群 ア 020 イ 060 ウ 080 エ 130 [プログラム] (行番号) 010 MMOVE START ; 020 ST GR1,SA ;パラメタ保存 030 ST GR2,DA ; 040 ST GR3,S ; 050 CPL GR2,SA ; 060 JMI ACHK ; 070 ADD GR1,S ; 080 CPL GR1,DA ; 090 JMI ARTN ; 100 JZE ARTN ; 110 JMP BRTN ; 120 ACHK ADD GR2,S ; 130 CPL GR2,SA ; 140 JMI ARTN ; 150 JZE ARTN ; 160 JMP ARTN ; 170 ARTN LD GR1,SA ;ブロックの先頭から転送開始 180 LD GR2,DA ; 190 ARTNL LD GR0,0,GR1 ; 200 ST GR0,0,GR2 ; 210 LEA GR1,1,GR1 ; 220 LEA GR2,1,GR2 ; 230 LEA GR3,-1,GR3 ; 240 JNZ ARTNL ;転送終了? 250 JMP PEND ; 260 BRTN LD GR2,DA ; 270 ADD GR2,S ; 280 BRTNL LEA GR1,1,GR1 ; 290 LEA GR2,-1,GR2 ; 300 LD GR0,0,GR1 ; 310 ST GR0,0,GR2 ; 320 LEA GR3,-1,GR3 ; 330 JNZ BRTNL ;転送終了? 340 PEND LD GR1,SA ;レジスタ復元 350 LD GR2,DA ; 360 LD GR3,S ; 370 RET ; 380 SA DS 1 ; 390 DA DS 1 ; 400 S DS 1 ; 410 END ;
戻る 次頁:問15