[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено ВН 27 сентября 2001 г. 12:25
В ответ на: Как на асме 8051 определить что в байте установлено больше одного бита? И как опре-лить сколько бит? Есстественно чтоб короче было. отправлено nvn 27 сентября 2001 г. 07:55

Есть способ подсчета 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