MAIN   START
       LAD    GR1,ARG      ;パラメータのアドレス
       CALL   SUB          ;副プログラムの呼び出し
       RET
ARG    DC     3,DATA,ANS   ;パラメータリスト
DATA   DC     #F000,#300F,#8000  ;アンケート結果
ANS    DS     16                 ;集計結果
       END
SUB    START              ;アンケート [b09.cas]
       RPUSH              ;汎用レジスタの退避
       LD     GR2,0,GR1   ;人数
       ST     GR2,NN      ;人数の保存 [  a  ]
       LD     GR2,1,GR1   ;データ
       LAD    GR6,16
       LAD    GR5,0
       LD     GR3,2,GR1   ;結果格納場所
LOOP   ST     GR5,0,GR3   ;ゼロクリア
       LAD    GR3,1,GR3
       SUBA   GR6,=1
       JPL    LOOP
       LAD    GR6,0       ;カウンタ
TOP    LD     GR4,0,GR2   ;データの取り出し
       LD     GR3,2,GR1   ;結果
N0     SLL    GR4,1       ;1ビット左シフト [  b  ]
       JOV    UP
       JZE    N2
       JUMP   N1
UP     LD     GR5,0,GR3
       LAD    GR5,1,GR5   ;YESの数を1追加
       ST     GR5,0,GR3   ;格納
N1     LAD    GR3,1,GR3
       JUMP   N0
N2     LAD    GR2,1,GR2   ;次のデータ
       LAD    GR6,1,GR6   ;カウンタを1追加 [  c  ]
       CPA    GR6,NN
       JMI    TOP
       RPOP               ;汎用レジスタの復元
       RET
NN     DS     1
       END