1 ;;; 「アセンブラ言語の使用」に掲載されているサンプル 2 COUNT1 START 3 ; 入力 GR1:検索する語 4 ; 処理 GR1中の'1'のビットの個数を求める 5 ; 出力 GR0:GR1中の'1'のビットの個数 6 PUSH 0,GR1 ; 7 PUSH 0,GR2 ; 8 SUBA GR2,GR2 ; Count = 0 9 AND GR1,GR1 ; 全部のビットが'0'? 10 JZE RETURN ; 全部のビットが'0'なら終了 11 MORE LAD GR2,1,GR2 ; Count = Count + 1 12 LAD GR0,-1,GR1 ; 最下位の'1'のビット1個を 13 AND GR1,GR0 ; '0'に変える 14 JNZ MORE ; '1'のビットが残っていれば繰返し 15 RETURN LD GR0,GR2 ; GR0 = Count 16 POP GR2 ; 17 POP GR1 ; 18 RET ; 呼び出しプログラムへ戻る 19 END ;