平成18年 春期 基本情報技術者 午後 問13
問13 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。
〔プログラムの説明〕 32 ビット符号なし 2 進整数と 15 ビット符号なし 2 進整数の乗算を 行う副プログラム MULT32 と, 32 ビット符号なし 2 進整数同士の加算を行う副プログラム ADD32 である。 (1) MULT32 は,32 ビットの被乗数が格納されている領域の先頭番地を GR2 に, 15 ビットの乗数を GR1 に設定して呼び出される。 MULT32 は,32 ビットの乗算結果を被乗数の格納領域に上書きして呼出し元に戻る。 乗算結果のうち,格納領域からはみ出した部分は無視する。 MULT32 は,その処理の過程で ADD32 を利用する。 (2) ADD32 は,被加数の格納されている領域の先頭番地を GR2 に, 加数の上位語と下位語をそれぞれ GR1 と GR0 に設定して呼び出される。 ADD32 は,32 ビットの加算結果を被加数の格納領域に上書きして呼出し元に戻る。 加算結果のうち,格納領域からはみ出した部分は無視する。 (3) 被乗数と被加数の格納形式を,次に示す。
(4) 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。
〔プログラム〕 (行番号) 1 MULT32 START ; シフトによる乗算 2 RPUSH 3 LD GR5,0,GR2 ;被乗数の退避 4 ST GR5,H ; ” 5 LD GR5,1,GR2 ; ” 6 ST GR5,L ; ” 7 LD GR5,=0 ;乗算結果格納領域の初期化 8 ST GR5,0,GR2 ; ” 9 ST GR5,1,GR2 ; ” 10 LAD GR3,15 ; 被乗数シフト用カウンタ初期化 11 LAD GR4,1 ; GR4 ← 16−GR3 12 LD GR6,GR1 ; 乗数を GR6 に設定,GR1 は作業用に解放 13 LP LAD GR3,-1,GR3 14 LAD GR4,1,GR4 ; GR3+GR4=16 の関係を維持 15 SLL GR6,1 16 JZE FIN 17 JPL LP ; 最上位ビットが 0 なら何もしない 18 LD GR1,H ; 被乗数の取出し 19 LD GR0,L 20 LD GR5,GR0 ; GR3 だけ被乗数(32 ビット)を左シフト 21 ; " 22 SLL GR1,0,GR3 ; " 23 SLL GR0,0,GR3 ; " 24 OR GR1,GR5 ; " 25 CALL ADD32 ; シフトされた被乗数を中間結果に加算 26 JUMP LP 27 FIN RPOP 28 RET 29 H DS 1 ; 被乗数上位語の退避場所 30 L DS 1 ; 〃 下位語 〃 31 ; 32 ADD32 RPUSH ; Z ← X+Y 33 ; X の上位語を XH,下位語を XL などと表記 34 LD GR4,GR0 ; YL を GR4 に設定 35 ADDL GR0,1,GR2 ; ZL ← XL+YL,ZL を GR0 に設定 36 XOR GR4,1,GR2 ; けた上がりの判定 37 JMI DIFF ; @ XL と YL の最上位ビットが, 38 XOR GR4,1,GR2 ; ともに 1 のときけた上がり 39 JUMP NEXT ; A XL と YL の最上位ビットが異なり, 40 DIFF XOR GR4,GR0 ; ZL の最上位ビットが 0 のときけた上がり 41 NEXT SRL GR4,15 ; けた上がりを GR4 の最下位ビットへ移動 42 43 ADDL GR1,0,GR2 44 ST GR1,0,GR2 45 ST GR0,1,GR2 46 RPOP 47 RET 48 END 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a に関する解答群 ア SLL GR5,0,GR3 イ SLL GR5,0,GR4 ウ SRA GR5,0,GR3 エ SRA GR5,0,GR4 オ SRL GR5,0,GR3 カ SRL GR5,0,GR4 b に関する解答群 ア ADDL GR0,GR4 イ ADDL GR1,GR4 ウ OR GR0,GR4 エ OR GR1,GR4 オ SUBL GR0,GR4 カ SUBL GR1,GR4
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。
MULT32 の受け取る乗数を 16 ビット符号なし2進整数とするため, 行番号 10,11 を次のとおりに変更する。 10 LAD GR3,16 ; 被乗数シフト用カウンタ初期化
さらに,行番号 16,17 を次の命令群で置き換える。
解答群 ア JOV LP イ JOV ONBIT ウ JPL FIN エ JPL ONBIT オ JZE FIN カ JZE FIN
設問3 次の記述中の に入れる正しい答えを, 解答群の中から選べ。
MULT32 を使用して,再帰的に階乗計算を行う副プログラム FACT を作成した。 (1) 正の整数 n の階乗 F(n) は,次式で求められる。 F(n) = n × F(n−1) (ただし,F(0) = 1) 例:F(3) = 3 × F(2) = 3 × 2 × F(1) = 3 × 2 × 1 × F(0) = 3 × 2 × 1 × 1 = 6 (2) FACT は,n を GR1 に,計算結果を格納する領域の先頭番地を GR2 に設定して呼び出される。 n は,その階乗 F(n) が 32 ビット符号なし2進整数の範囲に収まるように与えられる(1 ≦ n ≦ 12)。 計算結果格納領域の形式は,MULT32 の被乗数の格納形式と同じとする。 (3) 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 (行番号) 1 FACT START 2 RPUSH 3 CALL RMAIN ; 再帰処理の本体を呼ぶ 4 RPOP 5 RET ; 主プログラムに戻る 6 RMAIN LD GR1,GR1 ; N=0? 7 JNZ CONT ; N≠0 なら CONT へ 8 ST GR1,0,GR2 ; N=0 の場合 9 LD GR1,=1 ; F(0) の値 (=1) を 10 ST GR1,1,GR2 ; 計算結果格納領域に設定し 11 RET ; 行番号 15 に戻る 12 CONT PUSH 0,GR1 ; N の退避(N は n → n−1 →…→ 1 の順に変化) 13 LAD GR1,-1,GR1 ; GR1 ← N−1 14 CALL RMAIN ; F(N−1) を計算し計算結果格納領域に設定 15 POP GR1 ; N の復元(N は 1 → 2 →…→ n の順に変化) 16 CALL MULT32 ; F(N−1)×N を計算し計算結果格納領域に設定 17 RET ; 再帰処理の終了時は行番号 4 に, 18 END ; それ以外のときは行番号 15 に戻る F(3) を計算するとき,行番号 6 のラベル RMAIN の命令には 回制御が移る。 また,行番号 11 の RET 命令は 回実行される。
解答群 ア 1 イ 2 ウ 3 エ 4 オ 5 カ 6
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||