![]()
平成30年 秋期 基本情報技術者 午後 問12
問12 CASL次のアセンブラプログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 1970 年1月1日(以下,基準日という)から,指定された日付までの日数を 求める副プログラム群である。日付は,全て西暦(グレゴリオ暦)の日付であり, 基準日以降でなければならない。 (1)プログラム1は,基準日から指定された日付までの日数を計算する 副プログラム DAYOFFST である。日付は,GR2 に設定されたアドレスから始まる 連続した 3 語に年,月,日を表す数値でこの順に格納され,誤りはないものとする。 基準日を 0 日目とし,指定された日付までの日数を,符号のない数値( 0 〜 65535 )と して GRØ に設定して呼出し元に戻る。ただし,日付は基準日から 65535 日目までの日付で 与えられる。 (2)プログラム2は,うるう年を判定する副プログラム LEAPYEAR である。 GR2 に設定された年が平年の場合は 0 を,うるう年の場合は 1 を, GRØ に設定して呼出し元に戻る。年が平年であるか,うるう年であるかの判定は,次の順に行う。 A 年が 4 で割り切れ,かつ 100 で割り切れない場合,うるう年とする。 B 年が 400 で割り切れる場合,うるう年とする。 C @〜Bのいずれでも決定しなかった場合,平年とする。 (4)各副プログラムから戻るとき,汎用レジスタ GR1 〜 GR7 の内容は元に戻す。 〔プログラム1〕 (行番号) 1 DAYOFFST START 2 RPUSH 3 LD GR5,Ø,GR2 ; GR5: 年 4 LD GR3,1,GR2 ; GR3: 月 5 LD GR1,2,GR2 ; GR1: 日 6 SUB GR1,=1 ; GR1 で日数をカウント 7 a 8 ADDL GR1,-1,GR4 ; 1月1日から日数(平年)を求める 9 CPA GR3,=3 ; 月が3月以降のときうるう年を考慮 1Ø JMI SKIP 11 LD GR2,GR5 12 CALL LEAPYEAR 13 ADDL GR1,GRØ 14 SKIP LD GR2,=197Ø ; 197Ø年から(年−1)年までの間(ただし, 15 LOOP CPA GR2,GR5 ; 年>197Ø),1年の日数を加算 16 b 17 CALL LEAPYEAR 18 ADDL GRØ,=365 19 ADDL GR1,GRØ 2Ø ADDA GR2,=1 21 JUMP LOOP 22 BREAK LD GRØ,GR1 23 EXIT RPOP 24 RET 25 ; ACCMDAYSは,平年の各月1日の1月1日からの日数(1月1日はØ日目) 26 ACCMDAYS DC O,31,59,9Ø,12Ø,151,181,212,243,273,3Ø4,334 27 END〔プログラム2〕 (行番号) 1 LEAPYEAR START 2 RPUSH 3 SUBA GRØ,GRØ 4 LD GR3,GR2 5 AND GR3,=3 6 c 7 LD GR3,=1ØØ 8 CALL DIVISIBL 9 d 1Ø JNZ FIN 11 LD GR3,=4ØØ 12 CALL DIVISIBL 13 FIN RPOP 14 RET 15 END
a に関する解答群 ウ LAD GR4,ACCMDAYS,GR5 エ LD GR4,ACCMDAYS オ LD GR4,ACCMDAYS,GR3 カ LD GR4,ACCMDAYS,GR5 エ JPL BREAK オ JUMP BREAK カ JZE BREAK エ JUMP FIN オ JZE FIN エ OR GRØ,=1 オ XOR GRØ,=#FFFE カ XOR GRØ,=1
e に関する解答群
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||