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 ;