реклама на сайте
подробности

 
 
> Перестановка бит в байте, получить зеркальное отображение
bbill
сообщение Nov 6 2008, 11:28
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941



Появилась необходимость (из-за разводки) перевернуть байт:
было 0b76543210
стало 0b01234567

Можно тупо bld/bst, но хотелось бы покороче. Кто сталкивался с подобной задачей.

P.S. В поиске нашел только обсуждение о перестановке двух бит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Nov 7 2008, 15:45
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



вот на телесистемах была пару раз ветка по этой теме (поиск рулит) - там просто перлы были! 11 тактов, кажется или даже меньше! у меня только 14...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 7 2008, 21:39
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ARV @ Nov 7 2008, 18:45) *
вот на телесистемах была пару раз ветка по этой теме (поиск рулит) - там просто перлы были! 11 тактов, кажется или даже меньше!

НЕ ВЕРЮ!
Покажите <13 на AVR...

на PIC можно за 12
Go to the top of the page
 
+Quote Post
ae_
сообщение Nov 8 2008, 10:43
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(singlskv @ Nov 8 2008, 06:39) *
НЕ ВЕРЮ!
Покажите <13 на AVR...

на PIC можно за 12

12 тактов
Код
Reverse_1:; реверс бит в байте (R4 - вход/выход)

; обмен средних бит в тетрадах
mov R17,R4
andi R17,0b10011001
sub R4,R17
swap R4
or R4,R17
; выделение четных/нечетных бит
mov R17,R4
andi R17,0b10101010
sub R4,R17
; обмен четных/нечетных бит
out SREG,R4
ror R4
lsl R17
adc R4,R17

Порядок преобразования:
a b c d e f g h C
a f g d e b c h 0
a - g - e - c - 0
- f - d - b - h 0
h - f - d - b - -
- g - e - c - - a
h g f e d c b a 0

Единственный тонкий момент: обнуление I (запрет прерываний)
С разбегу обойти его мне не удалось без добавления 13-го такта.

©argus98 - все права защищены :))
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bbill   Перестановка бит в байте   Nov 6 2008, 11:28
- - =GM=   1) Если есть два свободных порта, переставить пров...   Nov 6 2008, 11:33
- - Maik-vs   Цитата(bbill @ Nov 6 2008, 14:28) Появила...   Nov 6 2008, 11:39
- - Сергей С.   Цитата(bbill @ Nov 6 2008, 16:28) Появила...   Nov 6 2008, 11:50
- - Vlad219i   Цитата(bbill @ Nov 6 2008, 15:28) Можно т...   Nov 6 2008, 12:45
- - МП41   Эх, не хватает однако подобной аппаратной команды....   Nov 6 2008, 13:08
- - CDT   Цитата(bbill @ Nov 6 2008, 14:28) Появила...   Nov 6 2008, 14:32
- - _Pasha   Кодrol tmp1 ror tmp2 ;........rept 8 раз А в чем п...   Nov 6 2008, 14:42
- - bbill   Спасибо Maik-vs. И короче, и главное быстрее. А ещ...   Nov 6 2008, 14:46
|- - Maik-vs   Цитата(bbill @ Nov 6 2008, 17:46) Спасибо...   Nov 7 2008, 12:42
- - Aleksandr Baranov   Bit Order   Nov 6 2008, 16:03
- - zombi   И всетаки мне кажется если скорость важнее то лучш...   Nov 7 2008, 14:22
- - ARV   Цитата(singlskv @ Nov 8 2008, 00:39) НЕ В...   Nov 7 2008, 21:45
- - Qwertty   Цитата(singlskv @ Nov 8 2008, 00:39) на P...   Nov 8 2008, 05:27
|- - _Pasha   Цитата(Qwertty @ Nov 8 2008, 08:27) А для...   Nov 8 2008, 07:10
- - singlskv   Цитата(ae_ @ Nov 8 2008, 13:43) 12 тактов...   Nov 8 2008, 20:22
- - Qwertty   Цитата(singlskv @ Nov 8 2008, 23:22) Увы,...   Nov 8 2008, 22:42
- - ae_   Цитата(Qwertty @ Nov 9 2008, 07:42) Идет ...   Nov 9 2008, 00:47
- - singlskv   Цитата(Qwertty @ Nov 9 2008, 01:42) Идет ...   Nov 9 2008, 08:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 20:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.03324 секунд с 7
ELECTRONIX ©2004-2016