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