情報処理試験2011年秋の問題を追加 v0.2p44
authorj8takagi <j8takagi@nifty.com>
Fri, 1 Jun 2018 06:14:18 +0000 (15:14 +0900)
committerj8takagi <j8takagi@nifty.com>
Fri, 1 Jun 2018 06:14:18 +0000 (15:14 +0900)
as/fe_tests/2011_10/Q12/Q12.txt [new file with mode: 0644]
as/fe_tests/2011_10/Q12/btod1.casl [new file with mode: 0644]
as/fe_tests/2011_10/Q12/btod2.casl [new file with mode: 0644]
as/fe_tests/2011_10/Q12/call_div.casl [new file with mode: 0644]
as/fe_tests/2011_10/Q12/div.casl [new file with mode: 0644]

diff --git a/as/fe_tests/2011_10/Q12/Q12.txt b/as/fe_tests/2011_10/Q12/Q12.txt
new file mode 100644 (file)
index 0000000..fa089cb
--- /dev/null
@@ -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 (file)
index 0000000..f67c7f4
--- /dev/null
@@ -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 (file)
index 0000000..073898e
--- /dev/null
@@ -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 (file)
index 0000000..87f12a3
--- /dev/null
@@ -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 (file)
index 0000000..bfc5630
--- /dev/null
@@ -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