X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=as%2Ffe_tests%2F2008_10%2FQ13%2Fsummary.casl;fp=as%2Ffe_tests%2F2008_10%2FQ13%2Fsummary.casl;h=1b7dda3e66c0fc65932644e38fbbb89421236bfc;hb=58ee37be62a5e359d0f6eb603cc86b5692f74b90;hp=0000000000000000000000000000000000000000;hpb=85744703060a90c21ee325d3a692f80233bc281f;p=YACASL2.git diff --git a/as/fe_tests/2008_10/Q13/summary.casl b/as/fe_tests/2008_10/Q13/summary.casl new file mode 100644 index 0000000..1b7dda3 --- /dev/null +++ b/as/fe_tests/2008_10/Q13/summary.casl @@ -0,0 +1,62 @@ +;;; 平成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