--- /dev/null
+COUNT1 START ;
+; 入力 ; GR1:検索する語
+; 処理 ; GR1 中の'1'のビットの個数を求める
+; 出力 ; GR0:GR1 中の'1'のビットの個数
+ PUSH 0,GR1 ;
+ PUSH 0,GR2 ;
+ SUBA GR2,GR2 ; Count = 0
+ AND GR1,GR1 ; 全部のビットが'0'?
+ JZE RETURN ; 全部のビットが'0'なら終了
+MORE LAD GR2,1,GR2 ; Count = Count + 1
+ LAD GR0,-1,GR1 ; 最下位の'1'のビット 1 個を
+ AND GR1,GR0 ; '0'に変える
+ JNZ MORE ; '1'のビットが残っていれば繰返し
+RETURN LD GR0,GR2 ; GR0 = Count
+ POP GR2 ;
+ POP GR1 ;
+ RET ; 呼出しプログラムへ戻る
+ END ;