From: j8takagi Date: Tue, 19 Jun 2018 08:05:42 +0000 (+0900) Subject: 情報処理試験の問題とプログラムファイルを外部に分離 X-Git-Tag: v0.4p0~18 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e21c536987c4bfbff61ea627e2bc27c46910ec53;p=YACASL2.git 情報処理試験の問題とプログラムファイルを外部に分離 --- diff --git a/as/exam_fe/2008_04/Q09/token.casl b/as/exam_fe/2008_04/Q09/token.casl deleted file mode 100644 index de57bca..0000000 --- a/as/exam_fe/2008_04/Q09/token.casl +++ /dev/null @@ -1,42 +0,0 @@ -TOKEN START - RPUSH - LD GR3,=-1 ; 単語の処理中を示すフラグの初期化 - ; 0: 数字だけの単語を処理中である。 - ; 1: 英字を含む単語を処理中である。 - ; -1: 単語の処理中ではない。 - LAD GR1,-1,GR1 -LP LAD GR1,1,GR1 - LD GR4,0,GR1 ; 1文字を取り出す。 - CPL GR4,='.' ; 終了判定 - JZE FIN - CPL GR4,=' ' - JNZ ALNUM - CALL SETTKN - JUMP LP -ALNUM LD GR3,GR3 ; 単語の処理中? - JPL LP ; 英字を含む単語を処理中ならLPヘ - JZE ACHK ; 数字だけの単語を処理中ならACHKヘ - LD GR3,=0 - LD GR6,GR1 ; 単語の先頭アドレスを退避 -ACHK CPL GR4,='A' ; 検査対象文字は数字? - JMI LP ; 数字の場合,次の文字の取出しヘ - LD GR3,=1 ; 英字の場合 - JUMP LP -; -FIN CALL SETTKN - LD GR5,=-1 - ST GR5,0,GR2 ; 終了マークを格納 - RPOP - RET -; -SETTKN LD GR3,GR3 ; 単語の処理中? - JMI FIN2 ; 処理中でなければ何もしない。 - ST GR6,0,GR2 ; 単語の先頭アドレスを管理テーブルに格納 - LD GR5,GR1 - SUBL GR5,GR6 ; 単語の長さを計算 - ST GR5,1,GR2 ; 単語の長さを格納 - ST GR3,2,GR2 ; 単語の属性を格納 - LD GR3,=-1 ; 単語の処理中状態を解除 - LAD GR2,3,GR2 -FIN2 RET - END diff --git a/as/exam_fe/2008_04/Q09/token_call.casl b/as/exam_fe/2008_04/Q09/token_call.casl deleted file mode 100644 index 9ed899b..0000000 --- a/as/exam_fe/2008_04/Q09/token_call.casl +++ /dev/null @@ -1,9 +0,0 @@ -MAIN START - LAD GR1,STR - LAD GR2,TBL - CALL TOKEN - RET - DS 93 -STR DC ' THIS 1234 AN9999.' -TBL DS 100 - END diff --git a/as/exam_fe/2008_10/Q09/ptn1.casl b/as/exam_fe/2008_10/Q09/ptn1.casl deleted file mode 100644 index cbf57c3..0000000 --- a/as/exam_fe/2008_10/Q09/ptn1.casl +++ /dev/null @@ -1,12 +0,0 @@ -;;; 平成20å¹´ 秋期 基本情報技術者 午後 問09 -;;; 最上位ビットから与えられたビット番号までのビットを1、それ以外を0に設定 -PTN1 START - PUSH 0,GR1 - LAD GR2,15 - SUBL GR2,GR1 - LD GR1,GR2 - LD GR2,=#8000 - SRA GR2,0,GR1 - POP GR1 - RET - END diff --git a/as/exam_fe/2008_10/Q09/ptn2.casl b/as/exam_fe/2008_10/Q09/ptn2.casl deleted file mode 100644 index b142e62..0000000 --- a/as/exam_fe/2008_10/Q09/ptn2.casl +++ /dev/null @@ -1,12 +0,0 @@ -;;; 平成20å¹´ 秋期 基本情報技術者 午後 問09 -;;; 最上位ビットから与えられたビット番号までのビットを0、それ以外を1に設定 -PTN2 START - PUSH 0,GR1 - LAD GR2,16 - SUBL GR2,GR1 - LD GR1,GR2 - LD GR2,=#FFFF - SRL GR2,0,GR1 - POP GR1 - RET - END diff --git a/as/exam_fe/2008_10/Q09/ptn3.casl b/as/exam_fe/2008_10/Q09/ptn3.casl deleted file mode 100644 index c1a69f9..0000000 --- a/as/exam_fe/2008_10/Q09/ptn3.casl +++ /dev/null @@ -1,7 +0,0 @@ -;;; 平成20å¹´ 秋期 基本情報技術者 午後 問09 -;;; 与えられたビット番号のビットを1,それ以外を0に設定 -PTN3 START - LD GR2,=#0001 - SLL GR2,0,GR1 - RET - END diff --git a/as/exam_fe/2008_10/Q09/ptn4.casl b/as/exam_fe/2008_10/Q09/ptn4.casl deleted file mode 100644 index 4c24fd8..0000000 --- a/as/exam_fe/2008_10/Q09/ptn4.casl +++ /dev/null @@ -1,16 +0,0 @@ -;;; 平成20å¹´ 秋期 基本情報技術者 午後 問09 -;;; 与えられたビット番号B1からB2(15>B1≧B2>0)までのビットを0、それ以外を1に設定 -PTN4 START - ST GR1,WRK - LD GR1,GR2 - CALL PTN1 - PUSH 0,GR2 ; PTN1 の結果を一時保存 - LD GR1,WRK - LAD GR1,1,GR1 ; ビット番号の調整 - CALL PTN2 - POP GR1 ; 保存していた PTN1 の結果を GR1 ヘ - XOR GR2,GR1 - LD GR1,WRK - RET -WRK DS 1 - END diff --git a/as/exam_fe/2008_10/Q09/test_ptn1/0.txt b/as/exam_fe/2008_10/Q09/test_ptn1/0.txt deleted file mode 100644 index ff9bad1..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn1/0.txt +++ /dev/null @@ -1,2 +0,0 @@ -../../../../../casl2 test_ptn1.casl ../ptn1.casl ../../../../../as/casl2lib/outb.casl -1111111111100000 diff --git a/as/exam_fe/2008_10/Q09/test_ptn1/Makefile b/as/exam_fe/2008_10/Q09/test_ptn1/Makefile deleted file mode 100644 index 9b30969..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn1/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -YACASL2DIR= ../../../../.. -CASL2 = $(YACASL2DIR)/casl2 -CASL2LIBDIR = $(YACASL2DIR)/as/casl2lib -ASFILE = test_ptn1.casl ../ptn1.casl $(CASL2LIBDIR)/outb.casl -CMD = $(CASL2) $(ASFILE) -include $(YACASL2DIR)/test/TEST.mk diff --git a/as/exam_fe/2008_10/Q09/test_ptn1/test_ptn1.casl b/as/exam_fe/2008_10/Q09/test_ptn1/test_ptn1.casl deleted file mode 100644 index a033f58..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn1/test_ptn1.casl +++ /dev/null @@ -1,7 +0,0 @@ -MAIN START - LAD GR1,5 - CALL PTN1 - LD GR1,GR2 - CALL OUTB - RET - END diff --git a/as/exam_fe/2008_10/Q09/test_ptn2/0.txt b/as/exam_fe/2008_10/Q09/test_ptn2/0.txt deleted file mode 100644 index 7a4395f..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn2/0.txt +++ /dev/null @@ -1,2 +0,0 @@ -../../../../../casl2 testptn2.casl ../ptn2.casl ../../../../../as/casl2lib/outb.casl -0000000000011111 diff --git a/as/exam_fe/2008_10/Q09/test_ptn2/Makefile b/as/exam_fe/2008_10/Q09/test_ptn2/Makefile deleted file mode 100644 index 2d72cac..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn2/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -YACASL2DIR= ../../../../.. -CASL2 = $(YACASL2DIR)/casl2 -CASL2LIBDIR = $(YACASL2DIR)/as/casl2lib -ASFILE = test_ptn2.casl ../ptn2.casl $(CASL2LIBDIR)/outb.casl -CMD = $(CASL2) $(ASFILE) -include $(YACASL2DIR)/test/TEST.mk diff --git a/as/exam_fe/2008_10/Q09/test_ptn2/test_ptn2.casl b/as/exam_fe/2008_10/Q09/test_ptn2/test_ptn2.casl deleted file mode 100644 index 62507ee..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn2/test_ptn2.casl +++ /dev/null @@ -1,7 +0,0 @@ -MAIN START - LAD GR1,5 - CALL PTN2 - LD GR1,GR2 - CALL OUTB - RET - END diff --git a/as/exam_fe/2008_10/Q09/test_ptn3/0.txt b/as/exam_fe/2008_10/Q09/test_ptn3/0.txt deleted file mode 100644 index 7920706..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn3/0.txt +++ /dev/null @@ -1,2 +0,0 @@ -../../../../../casl2 testptn3.casl ../ptn3.casl ../../../../../as/casl2lib/outb.casl -0000000000100000 diff --git a/as/exam_fe/2008_10/Q09/test_ptn3/Makefile b/as/exam_fe/2008_10/Q09/test_ptn3/Makefile deleted file mode 100644 index 568739e..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn3/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -YACASL2DIR= ../../../../.. -CASL2 = $(YACASL2DIR)/casl2 -CASL2LIBDIR = $(YACASL2DIR)/as/casl2lib -ASFILE = test_ptn3.casl ../ptn3.casl $(CASL2LIBDIR)/outb.casl -CMD = $(CASL2) $(ASFILE) -include $(YACASL2DIR)/test/TEST.mk diff --git a/as/exam_fe/2008_10/Q09/test_ptn3/test_ptn3.casl b/as/exam_fe/2008_10/Q09/test_ptn3/test_ptn3.casl deleted file mode 100644 index 6f2047e..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn3/test_ptn3.casl +++ /dev/null @@ -1,7 +0,0 @@ -MAIN START - LAD GR1,5 - CALL PTN3 - LD GR1,GR2 - CALL OUTB - RET - END diff --git a/as/exam_fe/2008_10/Q09/test_ptn4/0.txt b/as/exam_fe/2008_10/Q09/test_ptn4/0.txt deleted file mode 100644 index ccff634..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn4/0.txt +++ /dev/null @@ -1,2 +0,0 @@ -../../../../../casl2 test_ptn4.casl ../ptn4.casl ../ptn1.casl ../ptn2.casl ../../../../../as/casl2lib/outb.casl -1111100000011111 diff --git a/as/exam_fe/2008_10/Q09/test_ptn4/Makefile b/as/exam_fe/2008_10/Q09/test_ptn4/Makefile deleted file mode 100644 index 42b4ba1..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn4/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -YACASL2DIR= ../../../../.. -CASL2 = $(YACASL2DIR)/casl2 -CASL2LIBDIR = $(YACASL2DIR)/as/casl2lib -ASFILE = test_ptn4.casl ../ptn4.casl ../ptn1.casl ../ptn2.casl $(CASL2LIBDIR)/outb.casl -CMD = $(CASL2) $(ASFILE) -include $(YACASL2DIR)/test/TEST.mk diff --git a/as/exam_fe/2008_10/Q09/test_ptn4/test_ptn4.casl b/as/exam_fe/2008_10/Q09/test_ptn4/test_ptn4.casl deleted file mode 100644 index 7a2aef5..0000000 --- a/as/exam_fe/2008_10/Q09/test_ptn4/test_ptn4.casl +++ /dev/null @@ -1,8 +0,0 @@ -MAIN START - LAD GR1,10 - LAD GR2,5 - CALL PTN4 - LD GR1,GR2 - CALL OUTB - RET - END diff --git a/as/exam_fe/2008_10/Q13/summary.casl b/as/exam_fe/2008_10/Q13/summary.casl deleted file mode 100644 index 1b7dda3..0000000 --- a/as/exam_fe/2008_10/Q13/summary.casl +++ /dev/null @@ -1,62 +0,0 @@ -;;; 平成20å¹´ 秋期 基本情報技術者 午後 問13 -;;; アンケートに対するn人分の回答を集計し、集計結果をグラフで出力する副プログラム -SUMMARY START - RPUSH -; カウンタ領域と出力バッファを初期化 - LD GR2,=0 - LD GR3,=' ' - LD GR4,=0 ; ループカウンタ - LAD GR5,PBUF ; 出力バッファのポインタ -LOOP1 ST GR2,COUNTR,GR4 ; カウンタ領域を初期化 - ST GR3,0,GR5 ; 出力バッファを空白で初期化 - ST GR3,1,GR5 - ST GR3,2,GR5 - LAD GR5,3,GR5 ; 出力バッファのポインタを更新 - LAD GR4,1,GR4 ; ループカウンタを更新 - CPA GR4,=16 - JMI LOOP1 -; 項目ごとに "はい" と答えた人数を集計 - LD GR5,=0 ; GR5: "はい" の人数の最大値 -LOOP2 LD GR4,=0 ; カウンタ領域のポインタ - LD GR2,0,GR1 ; GR2 ←1人分の回答 -LOOP3 SLL GR2,1 ; 回答は "はい" ? - JOV ON - JZE NEXTW ; 残りの項目はすべて "いいえ" - JUMP OFF -ON LD GR3,COUNTR,GR4 ; カウンタに1を加算 - ADDA GR3,=1 - ST GR3,COUNTR,GR4 - CPA GR3,GR5 ; 最大値と比較 - JPL CHANGE - JUMP OFF -CHANGE LD GR5,GR3 ; 最大値を入替え -OFF LAD GR4,1,GR4 ; 次の項目 - JUMP LOOP3 -NEXTW LAD GR1,1,GR1 - SUBA GR0,=1 ; 全回答処理済? - JPL LOOP2 -; 集計結果を棒グラフで出力 - LD GR5,GR5 - JZE FIN - LD GR0,='*' -LOOP4 LD GR3,=1 ; 出力バッファのポインタ - LD GR4,=0 ; カウンタ領域のポインタ -LOOP5 CPA GR5,COUNTR,GR4 ; "はい" の人数と比較 - JNZ NOTSET - ST GR0,PBUF,GR3 ; 出力バッファに "*" を設定 -NOTSET LAD GR3,3,GR3 ; 出力バッファのポインタを更新 - LAD GR4,1,GR4 ; カウンタ領域のポインタを更新 - CPA GR4,=16 - JMI LOOP5 - OUT PBUF,PLEN - SUBA GR5,=1 - JPL LOOP4 -FIN OUT FOOTER,PLEN - RPOP - RET -COUNTR DS 16 ; カウンタ領域 -PLEN DC 48 -PBUF DS 48 ; 出力バッファ -FOOTER DC '01 02 03 04 05 06 07 08 09 10 11 12 13 ' - DC '14 15 16 ' - END diff --git a/as/exam_fe/2008_10/Q13/testsummary/0.txt b/as/exam_fe/2008_10/Q13/testsummary/0.txt deleted file mode 100644 index b1d6f4d..0000000 --- a/as/exam_fe/2008_10/Q13/testsummary/0.txt +++ /dev/null @@ -1,6 +0,0 @@ -../../../../../casl2 testsummary.casl ../summary.casl - * - * * * * - * * * * * * * - * * * * * * * * * * * * * * * * -01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 diff --git a/as/exam_fe/2008_10/Q13/testsummary/Makefile b/as/exam_fe/2008_10/Q13/testsummary/Makefile deleted file mode 100644 index b69201a..0000000 --- a/as/exam_fe/2008_10/Q13/testsummary/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -YACASL2DIR= ../../../../.. -CASL2 = $(YACASL2DIR)/casl2 -CASL2LIBDIR = $(YACASL2DIR)/as/casl2lib -ASFILE = testsummary.casl ../summary.casl -CMD = $(CASL2) $(ASFILE) -TESTDIR = $(YACASL2DIR)/test -include $(TESTDIR)/TEST.mk diff --git a/as/exam_fe/2008_10/Q13/testsummary/testsummary.casl b/as/exam_fe/2008_10/Q13/testsummary/testsummary.casl deleted file mode 100644 index 9287f86..0000000 --- a/as/exam_fe/2008_10/Q13/testsummary/testsummary.casl +++ /dev/null @@ -1,8 +0,0 @@ -MAIN START - LAD GR1,DATA - LD GR0,CNT - CALL SUMMARY - RET -DATA DC #9600,#F000,#A400,#FFFF,0,#2 -CNT DC 6 - END diff --git a/as/exam_fe/2009_04/Q12/muls.casl b/as/exam_fe/2009_04/Q12/muls.casl deleted file mode 100644 index 21b70f3..0000000 --- a/as/exam_fe/2009_04/Q12/muls.casl +++ /dev/null @@ -1,27 +0,0 @@ -;平成21å¹´ 春期 基本情報技術者 午後 問12 -MULS START ; 32ビット×16ビット→32ビット - RPUSH - LAD GR6,0 ; 積 上位語の初期化 - LAD GR7,0 ; 積 下位語の初期化 - LD GR4,0,GR1 ; 被乗数 上位語の取出し - LD GR5,1,GR1 ; 被乗数 下位語の取出し -LP SRL GR2,1 ; 乗数を1ビット右にシフト - JOV ADD32 - JZE FIN - JUMP NEXT ; 加算処理をスキップ -ADD32 ADDL GR6,GR4 ; 32ビット+32ビット→32ビット - ADDL GR7,GR5 - JOV ADJ1 - JUMP NEXT -ADJ1 ADDL GR6,=1 ; けた上げ処理 -NEXT SLL GR4,1 ; 被乗数(32ビット)を1ビット左にシフト - SLL GR5,1 - JOV ADJ2 - JUMP LP -ADJ2 OR GR4,=1 - JUMP LP -FIN ST GR6,0,GR3 ; 乗算結果の格納 - ST GR7,1,GR3 - RPOP - RET - END diff --git a/as/exam_fe/2009_04/Q12/muls2.casl b/as/exam_fe/2009_04/Q12/muls2.casl deleted file mode 100644 index b4143cf..0000000 --- a/as/exam_fe/2009_04/Q12/muls2.casl +++ /dev/null @@ -1,45 +0,0 @@ -;平成21å¹´ 春期 基本情報技術者 午後 問12-2 -MUL START ; 32ビット×32ビット→32ビット - RPUSH - PUSH 0,GR3 - PUSH 0,GR2 - LD GR2,1,GR2 ; 乗数下位語を取り出してGR2に設定 - CALL MULS ; 被乗数×乗数下位語→積(A) - POP GR2 - LD GR2,0,GR2 - LAD GR3,SV ; 結果の格納先として作業領域を設定 - CALL MULS ; 被乗数×乗数上位語→積(B) - LD GR6,1,GR3 - POP GR3 - ADDL GR6,0,GR3 ; 積(A)の上位語と積(B)の下位語を加算 - ST GR6,0,GR3 - RPOP - RET -SV DS 2 - END -MULS START ; 32ビット×16ビット→32ビット - RPUSH - LAD GR6,0 ; 積 上位語の初期化 - LAD GR7,0 ; 積 下位語の初期化 - LD GR4,0,GR1 ; 被乗数 上位語の取出し - LD GR5,1,GR1 ; 被乗数 下位語の取出し -LP SRL GR2,1 ; 乗数を1ビット右にシフト - JOV ADD32 - JZE FIN - JUMP NEXT ; 加算処理をスキップ -ADD32 ADDL GR6,GR4 ; 32ビット+32ビット→32ビット - ADDL GR7,GR5 - JOV ADJ1 - JUMP NEXT -ADJ1 ADDL GR6,=1 ; けた上げ処理 -NEXT SLL GR4,1 ; 被乗数(32ビット)を1ビット左にシフト - SLL GR5,1 - JOV ADJ2 - JUMP LP -ADJ2 OR GR4,=1 - JUMP LP -FIN ST GR6,0,GR3 ; 乗算結果の格納 - ST GR7,1,GR3 - RPOP - RET - END diff --git a/as/exam_fe/2009_04/Q12/muls2_call.casl b/as/exam_fe/2009_04/Q12/muls2_call.casl deleted file mode 100644 index 6f57d71..0000000 --- a/as/exam_fe/2009_04/Q12/muls2_call.casl +++ /dev/null @@ -1,10 +0,0 @@ -MAIN START - LAD GR1,X - LAD GR2,Y - LAD GR3,A - CALL MUL - RET -X DC 2,3 -Y DC 4,5 -A DS 2 - END diff --git a/as/exam_fe/2009_04/Q12/muls_call.casl b/as/exam_fe/2009_04/Q12/muls_call.casl deleted file mode 100644 index 2c6601b..0000000 --- a/as/exam_fe/2009_04/Q12/muls_call.casl +++ /dev/null @@ -1,10 +0,0 @@ -MAIN START - LAD GR1,X - LD GR2,Y - LAD GR3,A - CALL MULS - RET -X DC 10,30 -Y DC 4 -A DS 2 - END diff --git a/as/exam_fe/2009_10/Q12/outb.casl b/as/exam_fe/2009_10/Q12/outb.casl deleted file mode 100644 index 32fd6cb..0000000 --- a/as/exam_fe/2009_10/Q12/outb.casl +++ /dev/null @@ -1,108 +0,0 @@ -;;; GR1に格納された値を、2進数値として表示 -OUTL START - RPUSH - LAD GR2,2 ; GR2に2進数の「2」を格納。 - LAD GR0,0 ; GR0 <- 0 - ST GR0,LEN ; LENの初期化 - AND GR1,GR1 ; GR1をテスト - JZE ZINS ; GR1が0の場合、ZINSにジャンプ -STI CPL GR1,GR2 ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出 - JMI STLST ; ↓ - CALL ODIVL ; GR1とGR2の、商をGR0、剰余をGR1に格納 - LD GR1,NCHAR,GR1 ; GR1を文字に変換 - CALL STSTR ; GR1をSTR領域に格納 - LD GR1,GR0 ; GR0をGR1にコピー - JUMP STI ; ループ終端 -STLST LD GR1,NCHAR,GR1 ; GR1を文字に変換 - CALL STSTR ; GR1をSTR領域に格納 - JUMP EMB ; EMBにジャンプ -ZINS LD GR1,NCHAR ; 「0」をSTR領域に格納 - CALL STSTR ; ↓ -EMB LD GR1,NCHAR ; GR0 <- '0' -EMLOOP LD GR2,LEN ; GR2 <- LEN - CPA GR2,DIG ; ループ先頭。(GR2 = DIG)の場合は、ループ脱出 - JZE PRT ; ↓ - - CALL STSTR ; GR1をSTR領域に格納 - JUMP EMLOOP ; ループ終端 -PRT LD GR2,LEN ; GR2にLENの値を格納 - LAD GR1,STR ; GR1に文字列のアドレスを格納 - CALL REV ; 文字列を逆順に並べ替え - OUT STR,LEN ; 文字列を出力 - RPOP - RET -STR DS 17 -LEN DS 1 -NCHAR DC '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' -DIG DC 16 - END -;; GR1をSTR領域に格納し、LENをインクリメント -STSTR PUSH 0,GR1 - PUSH 0,GR2 - LD GR2,LEN ; GR2にLENの値をロード - ST GR1,STR,GR2 ; STR+GR2 <- GR1 - LAD GR2,1,GR2 ; GR2 <- GR2 + 1 - ST GR2,LEN ; LENにGR2を格納 - POP GR2 - POP GR1 - RET - END -;;; GR1の値とGR2の値の、商をGR0、剰余をGR1に格納する -;;; 0〜65535の範囲の数値を扱う -ODIVL START - PUSH 0,GR2 - PUSH 0,GR3 - LAD GR0,0 ; GR0の初期化。商 - ST GR2,ODY ; DYにGR2の初期値を保存 - LAD GR3,1 ; GR3の初期化。対象ビットを表す -ODSL CPL GR2,GR1 ; ループ先頭。(GR3 > GR1)の場合、DLOOPへループ脱出 - JPL ODLOOP ; ↓ - SLL GR3,1 ; GR3を1回左シフト - SLL GR2,1 ; GR2を1回左シフト - JOV ODYOV ; オーバーフローの場合は、ODYOVにジャンプ - JUMP ODSL ; ループ終端 -ODYOV SRL GR2,1 ; GR2を1回右シフト - LAD GR2,#8000,GR2 ; GR2 <- GR2 + #8000 - SRL GR3,1 ; GR3を1回右シフト - JUMP ODLPIN ; ODLPINへジャンプ -ODLOOP SRL GR3,1 ; ループ先頭。GR3を1回右シフト - JZE ODFIN ; (GR3= 0)の場合、ループ脱出 - SRL GR2,1 ; GR2を1回右シフト - CPL GR1,ODY ; (GR1 < ODY)の場合、ループ脱出 - JMI ODFIN ; ↓ - CPL GR1,GR2 ; (GR1 < GR2)の場合、ループ先頭へジャンプ - JMI ODLOOP ; ↓ -ODLPIN SUBL GR1,GR2 ; GR1 <- GR1 - GR2 - ADDL GR0,GR3 ; GR0 <- GR0 + GR3 - JUMP ODLOOP ; ループ終端 -ODFIN POP GR3 - POP GR2 - RET -ODY DS 1 -ODMB DC #8000 - END -;; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える -;; 例: 12345 -> 54321、54321- -> -12345 -REV START - RPUSH - LAD GR3,0 ; GR3の初期化 -RPU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 - JZE RNEXT ; ↓ - LD GR4,GR1 ; GR4にGR1の値をコピー - ADDL GR4,GR3 ; GR4 <- GR4 + GR3 - LD GR5,0,GR4 ; GR5にアドレスGR4の値を格納 - PUSH 0,GR5 ; GR5をプッシュ - LAD GR3,1,GR3 ; GR3 <- GR3 + 1 - JUMP RPU ; ループ終端 -RNEXT LAD GR3,0 ; GR3の初期化 -RPO CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 - JZE RFIN ; ↓ - POP GR5 ; GR5にポップ - LD GR4,GR1 ; GR4にGR1の値をコピー - ADDL GR4,GR3 ; GR4 <- GR4 + GR3 - ST GR5,0,GR4 ; アドレスGR4にGR5の値を格納 - LAD GR3,1,GR3 ; GR3 <- GR3 + 1 - JUMP RPO ; ループ終端 -RFIN RPOP - RET - END diff --git a/as/exam_fe/2009_10/Q12/replace.casl b/as/exam_fe/2009_10/Q12/replace.casl deleted file mode 100644 index 0086976..0000000 --- a/as/exam_fe/2009_10/Q12/replace.casl +++ /dev/null @@ -1,30 +0,0 @@ -REPLACE START - RPUSH - LD GR4,GR2 ; GR4 ← p - SRL GR4,4 ; GR4 ← p/16 - ADDA GR1,GR4 ; GR1 を置換え対象語(第i語)に位置付ける。 - AND GR2,=#000F - LD GR4,=16 - SUBA GR4,GR2 - LD GR5,GR0 - LD GR6,=#8000 - SUBA GR3,=1 - SRA GR6,0,GR3 - LD GR7,GR6 - SRL GR0,0,GR2 - SRL GR6,0,GR2 - SLL GR5,0,GR4 - SLL GR7,0,GR4 - LD GR2,0,GR1 - XOR GR6,GR2 ; 第i語のうち - AND GR2,GR6 ; ビット列Bを入れる部分を0にする。 - OR GR2,GR0 - ST GR2,0,GR1 - LD GR2,1,GR1 - XOR GR7,GR2 ; 第(i+1)語のうち - AND GR2,GR7 ; ビット列Bを入れる部分を0にする。 - OR GR2,GR5 - ST GR2,1,GR1 - RPOP - RET - END diff --git a/as/exam_fe/2009_10/Q12/replace_call.casl b/as/exam_fe/2009_10/Q12/replace_call.casl deleted file mode 100644 index af77f46..0000000 --- a/as/exam_fe/2009_10/Q12/replace_call.casl +++ /dev/null @@ -1,21 +0,0 @@ -MAIN START - LAD GR1,A - LD GR0,B - LD GR2,P - LD GR3,Q - CALL REPLACE - LAD GR1,A - LAD GR2,0 -LOOP CPA GR2,CNT - JZE FIN - LD GR1,A,GR2 - CALL OUTB - LAD GR2,1,GR2 - JUMP LOOP -FIN RET -A DC #FFFF,#FFFF,#FFFF,#FFFF,#FFFF,#FFFF -CNT DC 6 -B DC #B1D0 -P DC 55 -Q DC 12 - END diff --git a/as/exam_fe/2010_04/Q12/fadd.casl b/as/exam_fe/2010_04/Q12/fadd.casl deleted file mode 100644 index fdf1eb5..0000000 --- a/as/exam_fe/2010_04/Q12/fadd.casl +++ /dev/null @@ -1,65 +0,0 @@ -FADD START ; Z ← X + Y - RPUSH - PUSH 0,GR3 ; 結果 Z の格納領域の先頭番地を退避 - LD GR4,0,GR1 - AND GR4,=#00FF ; Ex: X の指数 - LD GR5,0,GR2 - AND GR5,=#00FF ; Ey: Y の指数 - LD GR6,1,GR1 ; Mx: X の仮数 - LD GR7,1,GR2 ; My: Y の仮数 -; 加算前の準備 (指数をそろえる) -; GR4 ← max(Ex,Ey) , GR6 ← 調整済 Mx , GR7 ← 調整済 My - LD GR3,GR4 - CPL GR4,GR5 - JZE MADD ; Ex = Ey の場合 - JMI BIGEY ; Ex < Ey の場合 - SUBL GR3,GR5 - SRL GR7,0,GR3 ; My を調整 - JUMP MADD -BIGEY LD GR4,GR5 - SUBL GR5,GR3 - SRL GR6,0,GR5 ; Mx を調整 -; 符号を考慮した仮数の加算 -; Sz: Z の符号 , Ez: Z の指数 , Mz: Z の仮数 -; GR4 ← (Sz,Ez) , GR5 ← Mz -MADD LD GR1,0,GR1 ; X の符号の検査 - JMI XMINUS ; 負の場合 - LD GR2,0,GR2 ; Y の符号の検査 - - LD GR5,GR6 ; X ≧ 0 , Y ≦ 0 の場合 - SUBL GR5,GR7 ; Mz ← 調整済 Mx − 調整済 My - JUMP SCHECK -XMINUS LD GR2,0,GR2 - JMI YMINUS - LD GR5,GR7 - SUBL GR5,GR6 - -YMINUS OR GR4,=#8000 ; Z に負符号を設定 -ADDMXY LD GR5,GR6 - ADDL GR5,GR7 ; Mz ← 調整済 Mx + 調整済 My - JOV ADJST ; けた上がりがある場合の正規化 - JUMP NORM -SCHECK JOV NEGMZ ; Mz の符号を検査 - JUMP NORM -NEGMZ OR GR4,=#8000 ; Sz に負符号を設定 - XOR GR5,=#FFFF ; Mz ← −Mz - ADDL GR5,=1 -;加算結果の正規化 -NORM LD GR5,GR5 ; ゼロチェック - JNZ LOOP - LD GR4,=0 - JUMP FIN -LOOP LD GR5,GR5 ; 正規化完了? - JMI FIN - - SUBL GR4,=1 - JUMP LOOP -ADJST SRL GR5,1 - OR GR5,=#8000 ; Mz の最上位ビットを 1 に設定 - -FIN POP GR3 - ST GR4,0,GR3 ; 結果 Z の格納 - ST GR5,1,GR3 - RPOP - RET - END diff --git a/as/exam_fe/2010_10/Q12/lrevrs.casl b/as/exam_fe/2010_10/Q12/lrevrs.casl deleted file mode 100644 index 66a6fbf..0000000 --- a/as/exam_fe/2010_10/Q12/lrevrs.casl +++ /dev/null @@ -1,20 +0,0 @@ -PREVRS START - RPUSH - LD GR4,0,GR1 ; ビット列を保存 - CALL REVRS ; ビット列のビットの並びを逆転 - LD GR5,0,GR1 ; GR5 ← 逆転したビット列 - LD GR6,=16 - SUBA GR6,GR3 ; GR6 ← 16 - q - SRL GR5,0,GR2 ; 逆転した部分ビット列αを右端に移動 - SLL GR5,0,GR6 ; 逆転した部分ビット列αを左端に移動 - SRL GR5,0,GR2 ; 逆転した部分ビット列αを p ビットに移動 - LD GR6,=#8000 - SRA GR6,-1,GR3 ; q ビット連続した1の並びを作成 - SRL GR6,0,GR2 - XOR GR6,=#FFFF - AND GR6,GR4 ; 元のビット列中の部分ビット列αにゼロを設定 - OR GR6,GR5 - ST GR6,0,GR1 - RPOP - RET - END diff --git a/as/exam_fe/2010_10/Q12/prevrs.casl b/as/exam_fe/2010_10/Q12/prevrs.casl deleted file mode 100644 index 66a6fbf..0000000 --- a/as/exam_fe/2010_10/Q12/prevrs.casl +++ /dev/null @@ -1,20 +0,0 @@ -PREVRS START - RPUSH - LD GR4,0,GR1 ; ビット列を保存 - CALL REVRS ; ビット列のビットの並びを逆転 - LD GR5,0,GR1 ; GR5 ← 逆転したビット列 - LD GR6,=16 - SUBA GR6,GR3 ; GR6 ← 16 - q - SRL GR5,0,GR2 ; 逆転した部分ビット列αを右端に移動 - SLL GR5,0,GR6 ; 逆転した部分ビット列αを左端に移動 - SRL GR5,0,GR2 ; 逆転した部分ビット列αを p ビットに移動 - LD GR6,=#8000 - SRA GR6,-1,GR3 ; q ビット連続した1の並びを作成 - SRL GR6,0,GR2 - XOR GR6,=#FFFF - AND GR6,GR4 ; 元のビット列中の部分ビット列αにゼロを設定 - OR GR6,GR5 - ST GR6,0,GR1 - RPOP - RET - END diff --git a/as/exam_fe/2010_10/Q12/revl.casl b/as/exam_fe/2010_10/Q12/revl.casl deleted file mode 100644 index 1424d8c..0000000 --- a/as/exam_fe/2010_10/Q12/revl.casl +++ /dev/null @@ -1,41 +0,0 @@ -LREVRS START - RPUSH - LD GR3,GR1 - LD GR4,GR2 - SUBA GR4,=1 - JZE LOOP2 - ADDA GR4,GR1 -LOOP1 LD GR5,0,GR3 ; - LD GR6,0,GR4 ; GR3 が指す語と GR4 が指す語の内容を - ST GR5,0,GR4 ; 入れ替える - ST GR6,0,GR3 ; - LAD GR3,1,GR3 ; GR3 を次の語に位置付ける - LAD GR4,-1,GR4 ; GR4 を一つ前の語に位置付ける - CPA GR3,GR4 - JMI LOOP1 -LOOP2 CALL REVRS - LAD GR1,1,GR1 - SUBA GR2,=1 - JNZ LOOP2 -FIN3 RPOP - RET - END -REVRS START - RPUSH - LD GR4,=0 ; 結果のビット列を初期化 - LAD GR2,15 ; ループカウンタ - LD GR3,0,GR1 ; GR3 ← ビット列 -LOOP SLL GR4,1 ; 結果のビット列を左シフト - SRL GR3,1 ; 元のビット列を右シフト - JOV ON - JZE FIN1 ; 元のビット列の残りのビットはすべてゼロ - JUMP OFF -ON OR GR4,=#0001 -OFF SUBA GR2,=1 - JMI FIN2 ; 16 ビット処理済み - JUMP LOOP -FIN1 SLL GR4,0,GR2 ; 結果のビット列を残りのビット数だけシフト -FIN2 ST GR4,0,GR1 - RPOP - RET - END diff --git a/as/exam_fe/2011_06/Q12/.gitignore b/as/exam_fe/2011_06/Q12/.gitignore deleted file mode 100644 index 237bae2..0000000 --- a/as/exam_fe/2011_06/Q12/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pbm -*.png diff --git a/as/exam_fe/2011_06/Q12/Q12.txt b/as/exam_fe/2011_06/Q12/Q12.txt deleted file mode 100644 index 24152ab..0000000 --- a/as/exam_fe/2011_06/Q12/Q12.txt +++ /dev/null @@ -1,92 +0,0 @@ -https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_pm_qs.pdf P.57 - P.60 -次のアセンブラプログラムの説明及びプログラムを読んで,設問1~3に答えよ。 - -〔プログラム1の説明〕 - -連続する 16 語に格納した 16 × 16 ドットの白黒の図形を,時計回りに 90 度回転する 副プログラム ROTATE である。図形の回転の実行例を図1に示す。このとき,1ドットを1ビットで 表し,白は0,黒は1が格納されている。 - -図1. -five.png -five_r.png - -(1) 図形を表す 16 語の先頭アドレスは GR1 に設定されて,主プログラムから渡される。 - -(2) 回転した結果の図形を格納する領域の先頭アドレスは GR2 に設定されて, 主プログラムから渡される。 - -(3) 元の図形と回転した図形は,異なる領域に格納される。 - -(4) 副プログラムから戻るとき,汎用レジスタ GR1 ~ GR7 の内容は元に戻す。 - -ROTATE START - RPUSH - LD GR3,=16 -LOOP1 LD GR4,=16 - LD GR5,GR2 ; GR5 ← 結果の領域のアドレス - LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 -LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 - SRL GR7,1 - SLL GR6,1 - JOV ON - JUMP CONT -ON OR GR7,=#8000 -CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 -   - SUBA GR4,=1 - JNZ LOOP2 -   - SUBA GR3,=1 - JNZ LOOP1 - RPOP - RET - END - -設問1. -プログラム1中の に入れる正しい答えを,解答群の中から選べ。 - -解答群 - -ア LAD GR1,-1,GR1 イ LAD GR1,1,GR1 ウ LAD GR2,-1,GR2 -エ LAD GR2,1,GR2 オ LAD GR5,-1,GR5 カ LAD GR5,1,GR5 - - -設問2. -行番号9を次のとおりに変更し,図1の回転前を元の図形として実行した。実行結果の図形として正しい答えを,解答群の中から選べ。 - - SRL GR6,1 - -設問3. -プログラム1中の行番号3,4をプログラム2に置き換えて,16×16ドットの図形のうち左上のn×nドットの部分だけを時計回りに90度回転するプログラムとした。左上の8×8ドットの部分だけを回転した実行例を図2に示す。 - 値n(1≦n≦16)は GR3 に設定されて主プログラムから渡される。 - 置換え後のプログラムは,まず,回転の対象とならないドット(元の図形の上n語の右(16-n)ビットと下(16-n)語の全ビット)を結果の領域の適切な場所に複写する。その後,左上のn×nドットの部分を回転して結果の領域に格納する。 -プログラム2の に入れる正しい答えを,解答群の中から選べ。 - -ROTATE START - RPUSH - LD GR3,=16 -LOOP1 LD GR4,=16 - LD GR5,GR2 ; GR5 ← 結果の領域のアドレス - LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 -LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 - SRL GR7,1 - SLL GR6,1 - JOV ON - JUMP CONT -ON OR GR7,=#8000 -CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 -   - SUBA GR4,=1 - JNZ LOOP2 -   - SUBA GR3,=1 - JNZ LOOP1 - RPOP - RET - END - -c に関する解答群 - -ア SLL GR0,-1,GR3 イ SLL GR0,0,GR3 ウ SRL GR0,-1,GR3 エ SRL GR0,0,GR3 - -d に関する解答群 - -ア JMI LOOP1 イ JNZ LOOP1 ウ JPL LOOP1 エ JZE LOOP1 diff --git a/as/exam_fe/2011_06/Q12/call_rotate.casl b/as/exam_fe/2011_06/Q12/call_rotate.casl deleted file mode 100644 index 40b6ef4..0000000 --- a/as/exam_fe/2011_06/Q12/call_rotate.casl +++ /dev/null @@ -1,28 +0,0 @@ -;;; 「五」を90度回転させた16 x 16のpbm画像を出力する -;;; 呼び出し方: -;;; casl2 call_rotate.casl rotate.casl pbm16.casl -MAIN START - LAD GR1,GRAPH - LAD GR2,RES - CALL ROTATE - LAD GR1,RES - CALL PBM16 - RET -GRAPH DC #FFFC - DC #FFFC - DC #FFFC - DC #0700 - DC #0700 - DC #0700 - DC #FFFC - DC #FFFC - DC #FFFC - DC #071C - DC #071C - DC #071C - DC #FFFF - DC #FFFF - DC #FFFF - DC #0000 -RES DS 16 - END diff --git a/as/exam_fe/2011_06/Q12/call_rotate2.casl b/as/exam_fe/2011_06/Q12/call_rotate2.casl deleted file mode 100644 index d4ed34f..0000000 --- a/as/exam_fe/2011_06/Q12/call_rotate2.casl +++ /dev/null @@ -1,29 +0,0 @@ -;;; 「五」を90度回転させた16 x 16のpbm画像を出力する -;;; 呼び出し方: -;;; casl2 call_rotate2.casl rotate2.casl pbm16.casl -MAIN START - LAD GR1,GRAPH - LAD GR2,RES - LAD GR3,8 - CALL ROTATE - LAD GR1,RES - CALL PBM16 - RET -GRAPH DC #FFFC - DC #FFFC - DC #FFFC - DC #0700 - DC #0700 - DC #0700 - DC #FFFC - DC #FFFC - DC #FFFC - DC #071C - DC #071C - DC #071C - DC #FFFF - DC #FFFF - DC #FFFF - DC #0000 -RES DS 16 - END diff --git a/as/exam_fe/2011_06/Q12/graph_five.casl b/as/exam_fe/2011_06/Q12/graph_five.casl deleted file mode 100644 index 7b53ace..0000000 --- a/as/exam_fe/2011_06/Q12/graph_five.casl +++ /dev/null @@ -1,18 +0,0 @@ -GRAPH START - DC #FFFC - DC #FFFC - DC #FFFC - DC #0700 - DC #0700 - DC #0700 - DC #FFFC - DC #FFFC - DC #FFFC - DC #071C - DC #071C - DC #071C - DC #FFFF - DC #FFFF - DC #FFFF - DC #0000 - END diff --git a/as/exam_fe/2011_06/Q12/out_pbm.casl b/as/exam_fe/2011_06/Q12/out_pbm.casl deleted file mode 100644 index 4eebee2..0000000 --- a/as/exam_fe/2011_06/Q12/out_pbm.casl +++ /dev/null @@ -1,24 +0,0 @@ -;;; 「五」を表す16 x 16のpbm画像を出力する -;;; 呼び出し方: -;;; casl2 out_pbm.casl pbm16.casl -MAIN START - LAD GR1,GRAPH - CALL PBM16 - RET -GRAPH DC #FFFC - DC #FFFC - DC #FFFC - DC #0700 - DC #0700 - DC #0700 - DC #FFFC - DC #FFFC - DC #FFFC - DC #071C - DC #071C - DC #071C - DC #FFFF - DC #FFFF - DC #FFFF - DC #0000 - END diff --git a/as/exam_fe/2011_06/Q12/pbm16.casl b/as/exam_fe/2011_06/Q12/pbm16.casl deleted file mode 100644 index e615f35..0000000 --- a/as/exam_fe/2011_06/Q12/pbm16.casl +++ /dev/null @@ -1,142 +0,0 @@ -;;; PBM16 -;;; GR1で指定されたアドレス以降のメモリを 16×16 の -;;; 白黒ビットマップ画像データ(白:0 黒:1)とみなし、 -;;; PBM画像ファイルとして出力 -;;; 入力: GR1 画像データの先頭アドレス -;;; 依存副プログラム: outb_w.casl divl.casl rotate.casl -PBM16 START - PUSH 0,GR1 - PUSH 0,GR2 - ST GR1,BEG - OUT L1,L1LEN - OUT L2,L2LEN - XOR GR2,GR2 -LOOP CPL GR2,HEIGHT - JZE FIN - LD GR1,BEG - ADDL GR1,GR2 - LD GR1,0,GR1 - CALL OUTB - LAD GR2,1,GR2 - JUMP LOOP -FIN POP GR2 - POP GR1 - RET -L1 DC 'P1' -L1LEN DC 2 -L2 DC '16 16' -L2LEN DC 5 -HEIGHT DC 16 -BEG DS 1 - END -;;; GR1に格納された値を、2進数値として表示 -OUTB START - RPUSH - LD GR2,BIN ; GR2に2進数の「2」を格納。 - XOR GR4,GR4 ; GR4: 2進数値の長さ -STI CPL GR1,GR2 ; ループ先頭。(GR1 < GR2)の場合は、ループ脱出 - JMI STLST ; ↓ - CALL DIVL ; GR1とGR2の、商をGR0、剰余をGR3に格納 - LD GR1,GR3 ; GR1にGR3をコピー - LD GR1,NCHAR,GR1 ; GR1を文字に変換 - ST GR1,STR,GR4 ; (STR + GR4) <- GR1 - LAD GR4,1,GR4 ; GR4 <- GR4 + 1 - LD GR1,GR0 ; GR0をGR1にコピー - JUMP STI ; ループ終端 -STLST LD GR1,NCHAR,GR1 ; GR1を文字に変換 - ST GR1,STR,GR4 ; (STR + GR4) <- GR1 - LAD GR4,1,GR4 ; GR4 <- GR4 + 1 -EMLOOP CPL GR4,DIG ; ループ先頭。(GR4 = DIG)の場合は、ループ脱出 - JZE PRT ; ↓ - LD GR1,NCHAR ; GR1 <- NCHAR:'0' - ST GR1,STR,GR4 ; (STR + GR4) <- GR1 - LAD GR4,1,GR4 ; GR4 <- GR4 + 1 - JUMP EMLOOP ; ループ終端 -PRT ST GR4,LEN ; LEN <- GR4 - LD GR2,LEN ; GR2にLENの値を格納 - LAD GR1,STR ; GR1に文字列のアドレスを格納 - CALL REV ; 文字列を逆順に並べ替え - OUT STR,LEN ; 文字列を出力 - RPOP - RET -STR DS 17 -LEN DS 1 -BIN DC 2 -NCHAR DC '01' -SPC DC ' ' -DIG DC 16 - END -;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う -;;; 入力 GR1:被除数 GR2:除数 -;;; 出力 GR0:商 GR3:剰余 -;;; (GR2 = 0)の場合、GR0 GR3とも0になり、オーバーフロー -DIVL START - PUSH 0,GR1 - PUSH 0,GR2 - PUSH 0,GR4 - XOR GR0,GR0 ; GR0:商 初期化 - XOR GR3,GR3 ; GR3:剰余 初期化 - AND GR2,GR2 ; (GR2 = 0)の場合、DIVZEROへジャンプ - JZE DIVZERO ; ↓ - AND GR1,GR1 ; (GR1 = 0)の場合、FINへジャンプ - JZE FIN ; ↓ - ST GR2,Y ; YにGR2の初期値を保存 - LAD GR4,1 ; GR4:対象ビットのインデックス 初期化 -SL CPL GR2,GR1 ; ループ先頭。(GR2 > GR1)の場合、LOOPへループ脱出 - JPL LOOP ; ↓ - SLL GR4,1 ; GR4を1回左シフト - ST GR2,TMP ; GR2の値をTMPに退避 - SLL GR2,1 ; GR2を1回左シフト - JOV YOV ; オーバーフローの場合は、YOVへジャンプ - JUMP SL ; ループ終端 -YOV LD GR2,TMP ; GR2の値をTMPから復元 - SRL GR4,1 ; GR4を1回右シフト - JUMP LPIN ; LPINへジャンプ -LOOP SRL GR4,1 ; ループ先頭。GR4を1回右シフト - JZE SETMOD ; (GR4 = 0)の場合、SETMODへループ脱出 - SRL GR2,1 ; GR2を1回右シフト - CPL GR1,Y ; (GR1 < Y)の場合、SETMODへループ脱出 - JMI SETMOD ; ↓ - CPL GR1,GR2 ; (GR1 < GR2)の場合、ループ先頭へジャンプ - JMI LOOP ; ↓ -LPIN SUBL GR1,GR2 ; GR1 <- GR1 - GR2 - ADDL GR0,GR4 ; GR0 <- GR0 + GR4 - JUMP LOOP ; ループ終端 -DIVZERO LAD GR3,#8000 ; 強制的にオーバーフローを発生させ、GR3 <- 0 - SLL GR3,1 ; ↓ - JUMP FIN ; FIN へジャンプ -SETMOD LD GR3,GR1 ; GR3 <- GR1。剰余の設定 -FIN POP GR4 - POP GR2 - POP GR1 - RET -Y DS 1 -TMP DS 1 - END -;;; メモリー上にある指定されたアドレス、長さの文字列を逆順に並べ替える -;;; 例: 12345 -> 54321、54321- -> -12345 -;;; 入力 GR1:文字列のアドレス GR2:文字列の長さ -;;; 出力 (同上) -REV START - RPUSH - LAD GR3,0 ; GR3の初期化 -PU CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 - JZE NEXT ; ↓ - LD GR4,GR1 ; GR4 <- GR1 - ADDL GR4,GR3 ; GR4 <- GR4 + GR3 - LD GR5,0,GR4 ; GR5 <- GR4アドレスの値 - PUSH 0,GR5 ; GR5をプッシュ - LAD GR3,1,GR3 ; GR3 <- GR3 + 1 - JUMP PU ; ループ終端 -NEXT LAD GR3,0 ; GR3の初期化 -PO CPL GR3,GR2 ; ループ先頭。(GR3 = GR2)の場合、ループ脱出 - JZE FIN ; ↓ - POP GR5 ; GR5にポップ - LD GR4,GR1 ; GR4にGR1の値をコピー - ADDL GR4,GR3 ; GR4 <- GR4 + GR3 - ST GR5,0,GR4 ; GR4のアドレス <- GR5の値 - LAD GR3,1,GR3 ; GR3 <- GR3 + 1 - JUMP PO ; ループ終端 -FIN RPOP - RET - END diff --git a/as/exam_fe/2011_06/Q12/rotate.casl b/as/exam_fe/2011_06/Q12/rotate.casl deleted file mode 100644 index 1ec2d29..0000000 --- a/as/exam_fe/2011_06/Q12/rotate.casl +++ /dev/null @@ -1,22 +0,0 @@ -ROTATE START - RPUSH - LD GR3,=16 -LOOP1 LD GR4,=16 - LD GR5,GR2 ; GR5 ← 結果の領域のアドレス - LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 -LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 - SRL GR7,1 - SLL GR6,1 - JOV ON - JUMP CONT -ON OR GR7,=#8000 -CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 - LAD GR5,1,GR5 - SUBA GR4,=1 - JNZ LOOP2 - LAD GR1,1,GR1 - SUBA GR3,=1 - JNZ LOOP1 - RPOP - RET - END diff --git a/as/exam_fe/2011_06/Q12/rotate2.casl b/as/exam_fe/2011_06/Q12/rotate2.casl deleted file mode 100644 index d2d7061..0000000 --- a/as/exam_fe/2011_06/Q12/rotate2.casl +++ /dev/null @@ -1,42 +0,0 @@ -ROTATE START - RPUSH - ST GR3,N - LD GR4,GR3 - LD GR5,GR1 - LD GR6,GR2 - LD GR7,=16 - SUBA GR7,GR3 -SHIFT LD GR0,0,GR5 - SLL GR0,0,GR3 - ST GR0,0,GR6 ; 結果の領域 ← GR0 - LAD GR5,1,GR5 ; 元の図形の1語のアドレス更新 - LAD GR6,1,GR6 ; 結果の図形の1語のアドレス更新 - SUBA GR4,=1 ; n語処理済み? - JNZ SHIFT -COPY SUBA GR7,=1 ; 残りの語の内容を結果の領域に複写 - JMI LOOP1 - LD GR0,0,GR5 - ST GR0,0,GR6 - LAD GR5,0,GR5 - LAD GR6,0,GR6 - JUMP COPY -N DS 1 -LOOP1 LD GR4,N - LD GR5,GR2 ; GR5 ← 結果の領域のアドレス - LD GR6,0,GR1 ; GR6 ← 元の図形の先頭語の内容 -LOOP2 LD GR7,0,GR5 ; GR7 ← 結果の領域の1語の内容 - SRL GR7,1 - SLL GR6,1 - JOV ON - JUMP CONT -ON OR GR7,=#8000 -CONT ST GR7,0,GR5 ; 処理した1語を結果の領域に格納 - LAD GR5,1,GR5 - SUBA GR4,=1 - JNZ LOOP2 - LAD GR1,1,GR1 - SUBA GR3,=1 - JNZ LOOP1 - RPOP - RET - END diff --git a/as/exam_fe/2011_10/Q12/Q12.txt b/as/exam_fe/2011_10/Q12/Q12.txt deleted file mode 100644 index 3caa0c5..0000000 --- a/as/exam_fe/2011_10/Q12/Q12.txt +++ /dev/null @@ -1,37 +0,0 @@ -https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_pm_qs.pdf P.56 - P.59 -次のアセンブラプログラムの説明及びプログラムを読んで,設問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. -プログラム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 - -設問2. -10進表記で 0~99999 の値の整数を32ビット符号なし整数として与えたとき,DIV を用いて10進数文字列に変換する副プログラム BTOD を異なるアルゴリズムで2種類作成した。プログラム2は10進表記の上位桁から求めるものであり,プログラム3は10進表記の下位桁から求めるものである。プログラム2,プログラム3中の に入れる正しい答えを,解答群の中から選べ。 -BTOD は32ビット符号なし整数の上位語を GR1 に,下位語を GR2 に,変換結果を格納する領域の先頭アドレスを GR3 に設定して呼び出される。 -変換後の10進数文字列は5語の領域に格納される。ただし,5桁に満たない場合は上位桁に"0"が補われる。対象数値が16進表記で 0000054D の場合の実行結果を,次に示す。 -pm12_3.gif/image-size:317×50 -副プログラム BTOD から戻るとき,汎用レジスタ GR1~GR7 の内容は元に戻す。 diff --git a/as/exam_fe/2011_10/Q12/btod1.casl b/as/exam_fe/2011_10/Q12/btod1.casl deleted file mode 100644 index 537b16e..0000000 --- a/as/exam_fe/2011_10/Q12/btod1.casl +++ /dev/null @@ -1,28 +0,0 @@ -BTOD START - RPUSH - LD GR6,GR3 - LAD GR7,4,GR3 - LAD GR3,UDAT ; 除数の初期設定 -LP CALL DIV - OR GR2,='0' - ST GR2,0,GR6 ; 10進数字1文字格納 - CPL GR6,GR7 - JZE FIN - LAD GR6,1,GR6 - LD GR1,GR4 ; 被除数の再設定 - LD GR2,GR5 - LAD GR3,2,GR3 - 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/exam_fe/2011_10/Q12/btod2.casl b/as/exam_fe/2011_10/Q12/btod2.casl deleted file mode 100644 index b461463..0000000 --- a/as/exam_fe/2011_10/Q12/btod2.casl +++ /dev/null @@ -1,17 +0,0 @@ -BTOD START - RPUSH - LAD GR6,4,GR3 - LD GR7,GR3 - LAD GR3,DAT -LP CALL DIV - OR GR5,='0' - ST GR5,0,GR6 - CPL GR6,GR7 - JZE FIN - LAD GR6,-1,GR6 - JUMP LP -FIN RPOP - RET -DAT DC 0 - DC 10 - END diff --git a/as/exam_fe/2011_10/Q12/call_btod.casl b/as/exam_fe/2011_10/Q12/call_btod.casl deleted file mode 100644 index a36354c..0000000 --- a/as/exam_fe/2011_10/Q12/call_btod.casl +++ /dev/null @@ -1,10 +0,0 @@ -MAIN START - LAD GR1,#0000 - LAD GR2,#054D - LAD GR3,STR - CALL BTOD - OUT STR,LEN - RET -STR DS 5 -LEN DC 5 - END diff --git a/as/exam_fe/2011_10/Q12/call_div.casl b/as/exam_fe/2011_10/Q12/call_div.casl deleted file mode 100644 index 5f8d825..0000000 --- a/as/exam_fe/2011_10/Q12/call_div.casl +++ /dev/null @@ -1,8 +0,0 @@ -MAIN START - LAD GR1,0 - LAD GR2,17 - LAD GR3,OP - CALL DIV - RET -OP DC 0,3 - END diff --git a/as/exam_fe/2011_10/Q12/div.casl b/as/exam_fe/2011_10/Q12/div.casl deleted file mode 100644 index 13b75dd..0000000 --- a/as/exam_fe/2011_10/Q12/div.casl +++ /dev/null @@ -1,26 +0,0 @@ -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 ADDL GR1,=1 -CONT SUBL GR6,0,GR3 - JOV FIN - SUBL GR7,1,GR3 - JOV ADJ2 - JUMP LP -ADJ2 SUBL GR6,=1 - JOV FIN - JUMP LP -FIN POP GR7 - POP GR6 - RET - END - diff --git a/as/exam_fe/2018_04/call_mult.casl b/as/exam_fe/2018_04/call_mult.casl deleted file mode 100644 index 0d6c96b..0000000 --- a/as/exam_fe/2018_04/call_mult.casl +++ /dev/null @@ -1,12 +0,0 @@ -MAIN START - LAD GR1,WD - CALL MULT - LD GR1,GR0 - LAD GR2,STR - CALL L2STR - ST GR0,LEN - OUT STR,LEN - RET -WD DC '12 45.' -STR DS 5 -LEN DS 1 diff --git a/as/exam_fe/2018_04/dtob.casl b/as/exam_fe/2018_04/dtob.casl deleted file mode 100644 index 91d4ca3..0000000 --- a/as/exam_fe/2018_04/dtob.casl +++ /dev/null @@ -1,18 +0,0 @@ -DTOB START - RPUSH - ADDL GR2,GR1 - LAD GR0,0 ; 戻り値の初期化 -LP CPL GR1,GR2 ; 変換終了? - JZE FIN - LD GR4,0,GR1 ; 数字1文字の取出し - SUBL GR4,='0' ; 1 桁を数値に変換 - SLL GR0,1 ; GR0を10倍してGR4を加算 - LD GR5,GR0 - SLL GR5,2 - ADDL GR0,GR5 - ADDL GR0,GR4 - LAD GR1,1,GR1 - JUMP LP -FIN RPOP - RET - END diff --git a/as/exam_fe/2018_04/getwd.casl b/as/exam_fe/2018_04/getwd.casl deleted file mode 100644 index 47e69cd..0000000 --- a/as/exam_fe/2018_04/getwd.casl +++ /dev/null @@ -1,34 +0,0 @@ -GETWD START - RPUSH - LD GR6,GR1 - LD GR7,GR2 - LD GR3,=-1 ; 数字列の処理状態フラグの初期化 - LAD GR6,-1,GR6 -LP LAD GR6,1,GR6 - LD GR4,0,GR6 ; 1文字の取出し - CPL GR4,='.' - JZE FIN - CPL GR4,=' ' - JNZ NUM - CALL SETWD - JUMP LP -NUM LD GR3,GR3 ; 数字列の処理中? - JZE LP - LD GR3,=0 ; 次の数字列の処理開始 - LD GR1,GR6 ; 数字列の先頭アドレスを退避 - JUMP LP -FIN CALL SETWD - LD GR2,=-1 - ST GR2,0,GR7 ; 数値の終わりを示す印を格納 - RPOP - RET -SETWD LD GR3,GR3 - JNZ FIN2 - LD GR2,GR6 - SUBL GR2,GR1 - CALL DTOB ; 数字列を数値に変換 - ST GR0,0,GR7 - LD GR3,=-1 ; 数字列の処理中状態を解除 - LAD GR7,1,GR7 -FIN2 RET - END diff --git a/as/exam_fe/2018_04/l2str.casl b/as/exam_fe/2018_04/l2str.casl deleted file mode 120000 index c64e894..0000000 --- a/as/exam_fe/2018_04/l2str.casl +++ /dev/null @@ -1 +0,0 @@ -../../casl2lib/l2str.casl \ No newline at end of file diff --git a/as/exam_fe/2018_04/mult.casl b/as/exam_fe/2018_04/mult.casl deleted file mode 100644 index 255cd5a..0000000 --- a/as/exam_fe/2018_04/mult.casl +++ /dev/null @@ -1,20 +0,0 @@ -MULT START - RPUSH - LAD GR2,CTBL - CALL GETWD - LD GR4,0,GR2 ; GR4 ← 被乗数 - LD GR5,1,GR2 ; GR5 ← 乗数 - LD GR0,=0 - LD GR5,GR5 -LP JZE FIN - LD GR3,GR5 - AND GR3,=#0001 ; 乗数の最下位ビットのチェック - JZE NEXT - ADDL GR0,GR4 -NEXT SLL GR4,1 ; 被乗数を1ビット左論理シフト - SRL GR5,1 - JUMP LP -FIN RPOP - RET -CTBL DS 3 ; GETWD用管理テーブル - END diff --git a/doc/exam_fe/.gitignore b/doc/exam_fe/.gitignore deleted file mode 100644 index 8ba3bd6..0000000 --- a/doc/exam_fe/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.html -*.pdf -*.eps diff --git a/doc/exam_fe/2018_04/Makefile b/doc/exam_fe/2018_04/Makefile deleted file mode 100644 index 3f46ec9..0000000 --- a/doc/exam_fe/2018_04/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -VPATH := img - -CSS := ../style.css - -TEXITARGETS := fe_2018_04.html fe_2018_04.pdf - -.PHONY: all clean distclean - -all: $(TEXITARGETS) - -clean: texinfo-clean - $(RM) *.bak - $(MAKE) -C img clean - -distclean: clean texinfo-distclean - $(RM) *.d *.html *.pdf - $(MAKE) -C img distclean - -include ../texinfo_exam.mk - -include ../../images.mk diff --git a/doc/exam_fe/2018_04/fe_2018_04.texi b/doc/exam_fe/2018_04/fe_2018_04.texi deleted file mode 100644 index e9f6a12..0000000 --- a/doc/exam_fe/2018_04/fe_2018_04.texi +++ /dev/null @@ -1,289 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@ifnottex -@documentlanguage ja_JP -@end ifnottex -@setfilename exam_fe_2018h.info -@documentencoding UTF-8 -@settitle 基本技術情報者試験 2018å¹´ 春期 午後問題 -@firstparagraphindent insert -@paragraphindent 0 -@ifhtml -@exampleindent 0 -@end ifhtml -@c %**end of header - -@indicateurl{https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_fe_pm_qs.pdf} P.62〜P.66より - -@unnumbered 問12 -次のアセンブラプログラムの説明及びプログラムを読んで,設問1~3に答えよ。 - -@unnumberedsec 〔プログラム1の説明〕 -0~65534の整数を表す数字から成る文字列(以下,数字列という)を数値に変換する副プログラムDTOBである。 - -(1) 文字列は,DC命令の文字定数と同じ形式で主記憶に格納される。数字列567を 格納した例を,図1に示す。 - -@center @image{img/fig1,15cm,,,.svg} - -@center 図1 数字列の格納例 - -(2) 主プログラムは,数字列が格納されている領域の先頭アドレスをGR1に,数字列の長さをGR2に設定して,DTOBを呼ぶ。DTOBは,数値に変換して得た値をGR0に格納して呼出し元に戻る。 - -(3) 副プログラムDTOBから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。 - - -@unnumberedsubsec〔プログラム1〕 - -@verbatim -DTOB START - RPUSH - ADDL GR2,GR1 - LAD GR0,0 ; 戻り値の初期化 -LP CPL GR1,GR2 ; 変換終了? - JZE FIN - LD GR4,0,GR1 ; 数字1文字の取出し - SUBL GR4,='0' ; 1 桁を数値に変換 - SLL GR0,1 ; GR0を10倍してGR4を加算 - LD GR5,GR0 - ::ansbox:8:a:: - ADDL GR0,GR5 - ADDL GR0,GR4 - LAD GR1,1,GR1 - JUMP LP -FIN RPOP - RET - END -@end verbatim - -@unnumberedsec 設問1 - -プログラム1中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。 - -aに関する解答群 -@itemize @w{} - -@item -ア @code{ADDL GR5,GR4} - -@item -イ @code{SLL GR4,1} - -@item -ウ @code{SLL GR4,2} - -@item -エ @code{SLL GR5,1} - -@item -オ @code{SLL GR5,2} -@end itemize - -@unnumberedsec 設問2 - -文字列の先頭から数字列を探索し,順に,対応する数値を管理テーブルに格納する副プログラムGETWDを,DTOBを使用して作成した。プログラム2中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。 - - -@unnumberedsubsec 〔プログラム2の説明〕 - -(1) 文字列は,一つ以上の空白文字で区切られた任意の個数の数字列を含み,最後はピリオドで終わる。最後の数字列とピリオドの間,又は文字列の先頭に一つ以上の空白文字があってもよい。文字列の例を,図2に示す。 - - -@center @image{img/fig2,15cm,,,.svg} - -@center 図2 文字列の例 - -(2) 管理テーブルには,文字列中に数字列が現れるごとに,順に1 語から成る要素を追加し,数字列を数値に変換して得た値を格納する。数字列の探索が終了したとき,管理テーブルの最後に1 語から成る要素を追加し,数値の終わりを示す印として-1を格納する。図2の文字列をGETWDで処理して得た管理テーブルを,図3に示す。 - -@center @image{img/fig3,15cm,,,.svg} - -@center 図3 GETWDで処理して得た管理テーブル - -(3) 主プログラムは,文字列が格納されている領域の先頭アドレスをGR1に,管理テーブルの先頭アドレスをGR2に設定して,GETWDを呼ぶ。 - -(4) 副プログラムGETWDから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。 - -@unnumberedsubsec 〔プログラム2〕 - -@verbatim -GETWD START - RPUSH - LD GR6,GR1 - LD GR7,GR2 - LD GR3,=-1 ; 数字列の処理状態フラグの初期化 - LAD GR6,-1,GR6 -LP LAD GR6,1,GR6 - LD GR4,0,GR6 ; 1文字の取出し - CPL GR4,='.' - JZE FIN - CPL GR4,=' ' - ::ansbox:8:b:: - CALL SETWD - JUMP LP -NUM LD GR3,GR3 ; 数字列の処理中? - JZE LP - LD GR3,=0 ; 次の数字列の処理開始 - LD GR1,GR6 ; 数字列の先頭アドレスを退避 - JUMP LP -FIN CALL SETWD - LD GR2,=-1 - ST GR2,0,GR7 ; 数値の終わりを示す印を格納 - RPOP - RET -SETWD LD GR3,GR3 - ::ansbox:8:c:: - LD GR2,GR6 - SUBL GR2,GR1 - CALL DTOB ; 数字列を数値に変換 - ST GR0,0,GR7 - LD GR3,=-1 ; 数字列の処理中状態を解除 - ::ansbox:8:d:: -FIN2 RET - END -@end verbatim - - -bに関する解答群 -@itemize @w{} - -@item -ア @code{JNZ FIN} - -@item -イ @code{JNZ LP} - -@item -ウ @code{JNZ NUM} - -@item -エ @code{JZE FIN} - -@item -オ @code{JZE LP} - -@item -カ @code{JZE NUM} -@end itemize - -cに関する解答群 -@itemize @w{} - -@item -ア @code{JNZ FIN} - -@item -イ @code{JNZ FIN2} - -@item -ウ @code{JNZ NUM} - -@item -エ @code{JZE FIN} - -@item -オ @code{JZE FIN2} - -@item -カ @code{JZE NUM} -@end itemize - -d に関する解答群 - -@itemize @w{} -@item -ア @code{LAD GR6,1,GR1} - -@item -イ @code{LAD GR6,1,GR6} - -@item -ウ @code{LAD GR7,1,GR2} - -@item -エ @code{LAD GR7,1,GR7} - -@item -オ @code{LD GR6,GR1} - -@item -カ @code{LD GR7,GR2} -@end itemize - -@unnumberedsec 設問3 - -GETWDを使用して,二つの整数の積を求める副プログラムMULTを作成した。プログラム3中の::ansbox:4::に入れる正しい答えを,解答群の中から選べ。 - -@unnumberedsubsec 〔プログラム3の説明〕 - -(1) MULTは,数字列を二つだけ含む,〔プログラム2の説明〕の(1)で示した形式の文字列について,最初の数字列に対応する数値を被乗数とし,2番目の数字列に対応する数値を乗数として乗算を行う。乗算においてあふれは発生しないものとする。 - -(2) 主プログラムは,文字列が格納されている領域の先頭アドレスをGR1に設定して,MULTを呼ぶ。MULTは,演算結果をGR0に格納して呼出し元に戻る。 - -(3) 副プログラムMULTから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。 - -@unnumberedsubsec 〔プログラム3〕 - -@verbatim -MULT START - RPUSH - LAD GR2,CTBL - CALL GETWD - LD GR4,0,GR2 ; GR4 ← 被乗数 - LD GR5,1,GR2 ; GR5 ← 乗数 - LD GR0,=0 - LD GR5,GR5 -LP ::ansbox:8:e:: - LD GR3,GR5 - AND GR3,=#0001 ; 乗数の最下位ビットのチェック - JZE NEXT - ADDL GR0,GR4 -NEXT SLL GR4,1 ; 被乗数を1ビット左論理シフト - ::ansbox:8:f:: - JUMP LP -FIN RPOP - RET -CTBL DS 3 ; GETWD用管理テーブル - END -@end verbatim - -eに関する解答群 - -@itemize @w{} -@item -ア @code{JMI FIN} - -@item -イ @code{JMI NEXT} - -@item -ウ @code{JPL FIN} - -@item -エ @code{JPL NEXT} - -@item -オ @code{JZE FIN} - -@item -カ @code{JZE NEXT} -@end itemize - - -fに関する解答群 - -@itemize @w{} -@item -ア @code{ADDL GR0,GR5} - -@item -イ @code{ADDL GR5,GR4} - -@item -ウ @code{LD GR5,GR4} - -@item -エ @code{SLL GR5,1} - -@item -オ @code{SRL GR5,1} -@end itemize -@bye diff --git a/doc/exam_fe/2018_04/img/Makefile b/doc/exam_fe/2018_04/img/Makefile deleted file mode 100644 index f54721f..0000000 --- a/doc/exam_fe/2018_04/img/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -all: $(foreach ext,.png .eps,$(addsuffix $(ext),$(basename $(wildcard *.svg)))) - -clean: - $(RM) *.log - -distclean: clean - $(RM) *.png *.eps *.jpg - -include ../../../images.mk diff --git a/doc/exam_fe/2018_04/img/fig1.svg b/doc/exam_fe/2018_04/img/fig1.svg deleted file mode 100644 index f376f72..0000000 --- a/doc/exam_fe/2018_04/img/fig1.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - #0035 - #0036 - #0037 - - - (1語目) - (2語目) - (3語目) - - - diff --git a/doc/exam_fe/2018_04/img/fig2.svg b/doc/exam_fe/2018_04/img/fig2.svg deleted file mode 100644 index af1cdb3..0000000 --- a/doc/exam_fe/2018_04/img/fig2.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - △△1234△56789△△△9876△. - - 注記 - 空白文字は“△”と表示する - - - diff --git a/doc/exam_fe/2018_04/img/fig3.svg b/doc/exam_fe/2018_04/img/fig3.svg deleted file mode 100644 index 9ae0372..0000000 --- a/doc/exam_fe/2018_04/img/fig3.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - 1234 - 56789 - 9876 - -1 - - - 注記 - 数値は,10進数で表記している。 - - - diff --git a/doc/exam_fe/style.css b/doc/exam_fe/style.css deleted file mode 100644 index b1d8a2c..0000000 --- a/doc/exam_fe/style.css +++ /dev/null @@ -1,174 +0,0 @@ -body { - margin-left: 6em; - margin-right: 12em; - color: black; - background-color: #EEE; - font-family: sans-serif; -} - -h1, h2, h3, h4, h5, h6 { - color: navy; - background-color: inherit; -} - -h1, h2 { - margin-left: -2em; -} - -.node{ - margin-left: -3em; - color: inherit; - background-color: #DDF; -} - -.menu, .node { - color: inherit; - background-color: #DDF; -} - -table.menu, table.menu th, table.menu td { - border-style: none; -} - -h2 { - padding: 0.25em; -} - -.contents { - background-color: #DDF; - border: 4px double #000; - padding: 0.5em 1em 0.5em 1em; -} - -.contents h2 { - margin-left: 0; - color: black; - background-color: #DDF; -} - -.contents li { - list-style-type: none; -} - -.shortcontents { - background-color: #DDF; - border: 4px double #000; - } - -.shortcontents h2{ - display: none; -} - -h1.node-heading { - display: none; -} - -h2.contents-heading{ - display: none; -} - -h2.shortcontents-heading{ - display: none; -} - -.shortcontents a { - margin-right: 1em; -} - -h3, h4, h5 { - margin-left: -1em; -} - -h5 { - font-size: 100%; -} - -p { - line-height: 1.25em; - margin-top: 0; - margin-bottom: 0.5em; -} - -a:hover { - color: red; - text-decoration: underline; -} - -pre.example, pre.verbatim { - padding: 0.5em 1em 0.5em 1em; - border: 1px solid #CCC; - font-size: 120%; -} - -a { - text-decoration: none; -} - -blockquote { - line-height: 1.25em; - border: 1px solid #00F; -} - -kbd, code, .file, var { - font-style: normal; - font-weight: normal; - font-family: monospace; - font-size: 120%; - margin-left:0.25em; - margin-right: 0.25em; -} - -table, th, td { - border: 1px solid black; - border-collapse: collapse; /* 枠線の表示方法 */ - margin-bottom: 1em; -} - -table.cartouche, table.cartouche th, table.cartouche td { - border: none; -} - -pre.example .command, pre.example .option, pre.example kbd { - font-weight: bold; - font-family: monospace; - font-size: 110%; - background-color: inherit; - font-style: normal; - margin-left:0; - margin-right: 0; -} - -pre.example strong { - font: inherit; - border: 2px solid green; -} - -th, em { - font-style: normal; - font-weight: bold; - font-family: sans-serif; -} - -th { - text-align: center; -} - -dfn { - font-style: normal; -} - -.header, .menu { - display: none; -} - -.selection { - color: navy; - font-weight: bold; - margin-right: 1em; -} - -.ansbox { - border: 2px solid navy; - text-align: center; - display: inline-block; -} diff --git a/doc/exam_fe/texinfo_exam.mk b/doc/exam_fe/texinfo_exam.mk deleted file mode 100644 index 56c8cd1..0000000 --- a/doc/exam_fe/texinfo_exam.mk +++ /dev/null @@ -1,78 +0,0 @@ -.PHONY: texinfo-distclean texinfo-clean texinfo-textmp-clean - -CP := cp -DVIPDFMX := dvipdfmx -DVIPDFMX_FLAGS ?= -ECHO := echo -INSTALL-INFO := install-info -MAKEINFO_FLAGS ?= -MKDIR := mkdir -RMR := rm -rf -SED := sed -TEX := ptex -TEXI2DVI := TEX=$(TEX) texi2dvi -TEXI2DVI_FLAGS ?= -q --texinfo=@afourpaper -MV := mv - -# \includeコマンドで読み込まれるファイル -intexi = $(strip $(shell $(SED) -n -e 's/@include \(.*\)/\1/pg' $<)) - -# \imageコマンドで読み込まれるファイル -imagetexi = $(strip $(shell $(SED) -n -e 's/.*@image{\([^,]*\)\(,[^,]*,[^,]*,[^,]*,\([^,}]*\)\)}.*/\1\3/p' $<)) - -# 依存関係を自動生成し、dファイルに格納 -%.d: %.texi - @$(ECHO) '$@ is created by scanning $<.' - # texiファイルと出力ファイルの依存関係 - @$(ECHO) '$(foreach ext,.html _html .pdf .xml .info .txt .d,$(subst .texi,$(ext),$<)): $<' >$@ - # includeファイルの依存関係 - $(if $(intexi),@( \ - $(ECHO) >>$@; \ - $(ECHO) '# Include Files' >>$@; \ - $(ECHO) '$(foreach ext,.html _html .info .pdf .xml .txt,$<),$(subst .texi,$(ext),$<): $(intexi)') >>$@) - # imageファイルの依存関係 - # Docbookは未定義 - $(if $(imagetexi),@( \ - $(ECHO) >>$@; \ - $(ECHO) '# Image Files: HTML, HTML split, Info' >>$@; \ - $(ECHO) '$(foreach ext,.html _html .info,$(subst .texi,$(ext),$<)): $(imagetexi)' >>$@)) - $(if $(imagetexi),@( \ - $(ECHO) >>$@; \ - $(ECHO) '# Imagefiles: DVI -> PDF' >>$@; \ - $(ECHO) '$(subst .texi,.pdf,$<): $(addsuffix .eps,$(basename $(imagetexi)))' >>$@)) - -# 変数TEXITARGETSで指定されたターゲットファイルに対応するdファイルをインクルード -# .dファイルからヘッダファイルの依存関係を取得する -# ターゲットに clean が含まれている場合は除く -ifeq (,$(filter %clean,$(MAKECMDGOALS))) - -include $(addsuffix .d,$(basename $(TEXITARGETS))) -endif - -%.info: %.texi - $(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ $< - -%.html: %.texi - $(MAKEINFO) -o $@ --no-split --html --css-include=$(CSS) $< - $(SED) -i '' -e 's%]*>%&%g' $@ - $(SED) -i '' -e 's% \([アイウエオカキクケコ]\)%\1%g' $@ - $(SED) -i '' -e 's%::ansbox:\([0-9]*\):*\([a-zA-Z]\)*::%\2\ %g' $@ - -%.html %_html: $(CSS) - -%.pdf: %.dvi - $(DVIPDFMX) $(DVIPDFMXFLAGS) $< - -%.txt: %.texi - $(MAKEINFO) --no-headers --disable-encoding -o $@ $< - -%.xml: %.texi - @$(MAKEINFO) --docbook -o $@ $< - -texinfo-distclean: texinfo-clean - $(RMR) *_html *.info *.html *.pdf *.dvi *.txt - -texinfo-clean: texinfo-textmp-clean - $(RM) *.d - -texinfo-textmp-clean: - $(RM) *.aux *.cp *.cps *.fn *.ky *.log *.pg *.pgs *.tmp *.toc *.tp *.vr