From: j8takagi Date: Fri, 1 Jun 2018 06:14:18 +0000 (+0900) Subject: 情報処理試験2011年秋の問題を追加 X-Git-Tag: v0.2p44 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe2de04b9021faae69c6b98d401797c9728e15dc;p=YACASL2.git 情報処理試験2011年秋の問題を追加 --- diff --git a/as/fe_tests/2011_10/Q12/Q12.txt b/as/fe_tests/2011_10/Q12/Q12.txt new file mode 100644 index 0000000..fa089cb --- /dev/null +++ b/as/fe_tests/2011_10/Q12/Q12.txt @@ -0,0 +1,28 @@ +次のアセンブラプログラムの説明及びプログラムを読んで,設問1,2に答えよ。 + +〔プログラム1の説明〕 + +除算を行う副プログラム DIV である。 + +(1) DIV は表1に示すレジスタを介して,被除数と除数を受け取り,商と剰余を返す。 数値は全て 32 ビットの符号なし整数とし,除数は0でないものとする。 + +表1 パラメタの受渡し方法 + 上位語(上位 16 ビット) 下位語(下位 16 ビット) +入力 被除数 GR1 GR2 + 除数 連続する2語に,上位 16 ビット,下位 16 ビットの順に格納し,上位語のアドレスを GR3 に設定 +出力 商 GR1 GR2 + 剰余 GR4 GR5 + +(2) 副プログラム DIV から戻るとき,汎用レジスタ GR6, GR7 の内容は元に戻す。 + +プログラム1中の に入れる正しい答えを,解答群の中から選べ。 + +a に関する解答群 + +ア ADDL GR1,0,GR3 イ ADDL GR1,=1 ウ ADDL GR2,1,GR3 +エ ADDL GR2,=1 オ ADDL GR4,0,GR3 カ ADDL GR5,1,GR3 + +b に関する解答群 + +ア JMI ADJ2 イ JMI CONT ウ JOV ADJ2 +エ JOV CONT オ JPL ADJ2 カ JPL CONT diff --git a/as/fe_tests/2011_10/Q12/btod1.casl b/as/fe_tests/2011_10/Q12/btod1.casl new file mode 100644 index 0000000..f67c7f4 --- /dev/null +++ b/as/fe_tests/2011_10/Q12/btod1.casl @@ -0,0 +1,28 @@ + BTOD START + RPUSH + LD GR6,GR3 + LAD GR7,4,GR3 + LAD GR3,UDAT ; 除数の初期設定 + LP CALL DIV + OR ,='0' + ST ,0,GR6 ; 10 進数字1文字格納 + CPL GR6,GR7 + JZE FIN + LAD GR6,1,GR6 + LD GR1,GR4 ; 被除数の再設定 + LD GR2,GR5 + + JUMP LP + FIN RPOP + RET + UDAT DC 0 + DC 10000 + DC 0 + DC 1000 + DC 0 + DC 100 + DC 0 + DC 10 + DC 0 + DC 1 + END diff --git a/as/fe_tests/2011_10/Q12/btod2.casl b/as/fe_tests/2011_10/Q12/btod2.casl new file mode 100644 index 0000000..073898e --- /dev/null +++ b/as/fe_tests/2011_10/Q12/btod2.casl @@ -0,0 +1,18 @@ + BTOD START + RPUSH + LAD GR6,4,GR3 + LD GR7,GR3 + LAD GR3,DAT + LP CALL DIV + OR ,='0' + ST ,0,GR6 + CPL GR6,GR7 + JZE FIN + LAD GR6,-1,GR6 + JUMP LP + FIN RPOP + RET + DAT DC 0 + DC + END + diff --git a/as/fe_tests/2011_10/Q12/call_div.casl b/as/fe_tests/2011_10/Q12/call_div.casl new file mode 100644 index 0000000..87f12a3 --- /dev/null +++ b/as/fe_tests/2011_10/Q12/call_div.casl @@ -0,0 +1,3 @@ +MAIN START + RPUSH + diff --git a/as/fe_tests/2011_10/Q12/div.casl b/as/fe_tests/2011_10/Q12/div.casl new file mode 100644 index 0000000..bfc5630 --- /dev/null +++ b/as/fe_tests/2011_10/Q12/div.casl @@ -0,0 +1,26 @@ +DIV START ; 減算を用いた 32 ビット除算 + PUSH 0,GR6 + PUSH 0,GR7 + LD GR6,GR1 + LD GR7,GR2 + LD GR1,=#FFFF ; 商の初期化 + LD GR2,=#FFFF + LP LD GR4,GR6 + LD GR5,GR7 + ADDL GR2,=1 ; 商のカウントアップ + JOV ADJ1 + JUMP CONT + ADJ1 + CONT SUBL GR6,0,GR3 + J0V FIN + SUBL GR7,1,GR3 + + JUMP LP + ADJ2 SUBL GR6,=1 + J0V FIN + JUMP LP + FIN POP GR7 + POP GR6 + RET + END +