![]()
平成20年 春期 基本情報技術者 午後 問13
問13 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 (1) プログラム MAIN は,入力ファイル中の1〜3けたの数字列からなるレコードを 入力し,入力した数字列を 10 進数値とみなしたときの最大値,最小値及び 平均値を 10 進数の数字列で出力する。入力ファイルの例を図1に, このときの出力の例を図2に示す。
@ 0≦入力レコードの数値≦ 100 とする。 A 1≦レコード数≦ 100 とする。 B 平均値は小数点以下を切り捨てる。 (1) プログラム MAIN は,三つの副プログラム INPUT,DIVIDE 及び PRINT を使用する。 (2) 副プログラム INPUT は,入力ファイルからレコードを入力する。 @ 入力したレコードの数字列を2進数に変換し,GR0 に設定して,主プログラムに戻る。 A ファイルの終わりを検出した場合は,CRO に -1 を設定して,主プログラムに戻る。 B 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 (4) 副プログラム DIVIDE は,除算を行う。
@ 被除数は GR2 に,除数は GR1 に設定されて,主プログラムから渡される。 A 商を GR3 に,剰余を GR2 に設定して,主プログラムに戻る。 B 副プログラムは,GR2,GR3 以外の汎用レジスタの内容は変更しない。 (5) 副プログラム PRINT は,2進数nを3けたの 10 進数の数字列に変換して出力する。 @ nは GR1 に設定されて,主プログラムから渡される。 A 出力する数字列は右詰めにし,全体で3文字になるように左端から空白文字を補う。 B 副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。
〔プログラム1〕 MAIN START CALL INPUT ST GR0,MAX ST GR0,MIN LD GR2,GR0 ; 合計値を初期化 LD GR1,=1 ; カウンタを初期化 LOOP1 CALL INPUT LD GR0,GR0 ; 入力値 JMI FIN1 ; ファイルの終わり ADDA GR2,GR0 ADDA GR1,=1 CPA GR0,MAX JPL HIGH CPA GR0,MIN JMI LOW JUMP LOOP1 HIGH ST GR0,MAX JUMP LOOP1 LOW ST GR0,MIN JUMP LOOP1 FIN1 CALL DIVIDE LD GR1,MAX CALL PRINT ; 最大値を出力 LD GR1,MIN CALL PRINT ; 最小値を出力設問 プログラム中の ![]() a に関する解答群 エ LD GR2,GR0 オ LD GR2,GR1 カ LD GR2,GR3 エ SRL GR5,1 オ SRL GR5,2 カ SRL GR5,3 ウ JPL FIN2 エ JPL LOOP2 オ JZE FIN2 カ JZE LOOP2 ウ JPL FIN3 エ JZE FIN3 ウ JNZ FIN4 エ JNZ LOOP4 オ JPL FIN4 カ JZE LOOP4
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||