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

 
 
> Алгоритм, перестановка битов
Slavik_tz
сообщение Aug 1 2006, 05:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 4-07-06
Пользователь №: 18 558



Помогите найти алгоритм наиболее быстрый, для перестановки битов
R->R
-----
0->7
1->6
2->5
3->4
4->3
5->2
6->1
7->0
1). Простой, сдвиговый с иполозование бита переноса региста флагов
ldi cnt,8
loop:
rol tmp
ror tmp1
dec cnt
brne loop
mov tmp,tmp1
занимает 8байт памяти, время выполнения 5мкс, использование 3регистров, и если сохранять регистр флагов, то еще больше
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy_F
сообщение Aug 1 2006, 07:58
Сообщение #2


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

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Для PIC'а это выглядит так:

<CODE>
;***************************************************************
; Routine: reverse8bit
; Инверсия байта
; Input X = abcdefgh , Output X = hgfedcba
; Written by Dmitry A. Kiryashov 2000
; 12 clocks/words
; (!) Переменная BUFINT не должна использоваться вне прерывания
;***************************************************************
reverse8bit:
SWAPF BUFINT, w ;efghabcd
XORWF BUFINT, w ;efghabcd
;abcdefgh
ANDLW 0x66 ;.fg..bc.
;.bc..fg.
XORWF BUFINT, f ;afgdebch
RRF BUFINT, w
RRF BUFINT, f ;hafgdebc
ANDLW 0x55 ;.a.g.e.c
ADDWF BUFINT, f ;h.f.d.b.
;a.g.e.c.
RRF BUFINT, f ;.h.f.d.b
;.a.g.e.c
ADDWF BUFINT, f ;ahgfedcb
RLF BUFINT, w
RLF BUFINT, w ; Результат в аккумуляторе
RETURN
;***************************************************************
</CODE>
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 05:54
Рейтинг@Mail.ru


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