[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Есть способ подсчета 1, на мой взгляд довольно красивый. Здесь, кажется, не упоминавшийся. По об'ему кода и быстродействию сравним с тетрадной таблицей.
Пусть байт, в котором нужно посчитать 1, уже находится в A. Используется ячейка памяти или регистр, пусть R0.
MOV R0,A
ANL A,#55H
XCH A,R0
ANL A,#0AAH
RR A
ADD A,R0
MOV R0,A
ANL A,#33H
XCH A,R0
ANL A,#0CCH
RR A
RR A
ADD A,R0
MOV R0,A
ANL A,#0FH
XCH A,R0
SWAP A
ANL A,#0FH
ADD A,R0
Результат в A.
Этот способ удобно использовать для процессоров, имеющих косой сдвигатель.
E-mail: info@telesys.ru