root/as/sample/count1.casl

/* [<][>][^][v][top][bottom][index][help] */
   1 COUNT1  START                    ;
   2 ;       入力    ; GR1:検索する語
   3 ;       処理    ; GR1 中の'1'のビットの個数を求める
   4 ;       出力    ; GR0:GR1 中の'1'のビットの個数
   5         PUSH    0,GR1            ;
   6         PUSH    0,GR2            ;
   7         SUBA    GR2,GR2          ; Count = 0
   8         AND     GR1,GR1          ; 全部のビットが'0'?
   9         JZE     RETURN           ; 全部のビットが'0'なら終了
  10 MORE    LAD     GR2,1,GR2        ; Count = Count + 1
  11         LAD     GR0,-1,GR1       ; 最下位の'1'のビット 1 個を
  12         AND     GR1,GR0          ; '0'に変える
  13         JNZ     MORE             ; '1'のビットが残っていれば繰返し
  14 RETURN  LD      GR0,GR2          ; GR0 = Count
  15         POP     GR2              ;
  16         POP     GR1              ;
  17         RET                      ; 呼出しプログラムへ戻る
  18         END                      ;

/* [<][>][^][v][top][bottom][index][help] */