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

 
 
> Поменять местами биты в байте.
ps1x
сообщение May 9 2007, 09:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Допустим есть

0bXY000000.

Как сделать

0bYX000000?

Надо использовать битовые маски и логические операции, только вот с масками никак не разберусь...

И еще, есть ли в CVAVR функция, возвращающая № буквы, т.е. типа chr("a")=35 ?

С уважением.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Visor
сообщение May 10 2007, 13:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Есть такой флаг "Т", вот через него можно легко гонять биты регистров, с помощью команд BST и BLD. Но это асм, который не все жалуют. cool.gif
Go to the top of the page
 
+Quote Post
kv_addr
сообщение May 11 2007, 00:34
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(Visor @ May 10 2007, 16:07) *
Есть такой флаг "Т", вот через него можно легко гонять биты регистров, с помощью команд BST и BLD. Но это асм, который не все жалуют. cool.gif

На ассемблере получается очень просто с использованием временного регистра и флага Т:
...
ld temp, x
bst temp, 6
bld x, 7
bst temp, 7
bld x, 6
...
Пробовал получить такую же последовательность команд при помощи IAR-C. Хотя IAR-C в самом принципе флаг Т использует, но как только ни пытался шаманить, так и не смог выдавить такую компактную последовательность. sad.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 11 2007, 15:27
Сообщение #4


дятел
*****

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



Цитата(kv_addr @ May 11 2007, 04:34) *
На ассемблере получается очень просто с использованием временного регистра и флага Т:
...
ld temp, x
bst temp, 6
bld x, 7
bst temp, 7
bld x, 6
...
Пробовал получить такую же последовательность команд при помощи IAR-C. Хотя IAR-C в самом принципе флаг Т использует, но как только ни пытался шаманить, так и не смог выдавить такую компактную последовательность. sad.gif

Длинновато... , да и лишний регистр используем smile.gif
Код
;  4 words / 4 cycles;
; Input:  tmp= abcdefgh
reversbits78:
    bst    tmp,7   ; T=a
    lsl    tmp     ; tmp= bcdefgh0
    asr    tmp     ; tmp= bbcdefgh
    bld    tmp,6   ; tmp= bacdefgh
Go to the top of the page
 
+Quote Post
kv_addr
сообщение May 11 2007, 15:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(singlskv @ May 11 2007, 18:27) *
Длинновато... , да и лишний регистр используем smile.gif

Дык, не спорю. smile.gif
Правда мой вариант более универсален. Можно применить к любым битам.

Цитата(singlskv @ May 11 2007, 18:27) *
Код
;  4 words / 4 cycles;
; Input:  tmp= abcdefgh
reversbits78:
    bst    tmp,7 ; T=a
    lsl    tmp; tmp= bcdefgh0
    asr    tmp; tmp= bbcdefgh
    bld    tmp,6 ; tmp= bacdefgh

Пытался вышаманить из IAR-C, а там, как на мой взгляд, с asr ещё более проблематично, чем с флагом Т. 05.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ps1x   Поменять местами биты в байте.   May 9 2007, 09:43
- - zltigo   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 9 2007, 10:22
|- - ps1x   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 10:36
||- - zltigo   Цитата(ps1x @ May 9 2007, 13:36) да нет, ...   May 9 2007, 10:46
||- - haker_fox   Цитата(ps1x @ May 9 2007, 18:36) да нет, ...   May 9 2007, 11:47
||- - ps1x   Цитата(haker_fox @ May 9 2007, 14:47) А к...   May 9 2007, 12:16
||- - haker_fox   Цитата(ps1x @ May 9 2007, 21:16) У меня е...   May 11 2007, 02:41
|- - Serg76   Цитата(zltigo @ May 9 2007, 13:22) xxx = ...   May 9 2007, 12:23
|- - ps1x   Цитата(Serg76 @ May 9 2007, 15:23) Как мн...   May 9 2007, 13:24
|- - Serg76   Цитата(ps1x @ May 9 2007, 16:24) Я это сд...   May 9 2007, 14:44
|- - zltigo   Цитата(Serg76 @ May 9 2007, 17:44) ....то...   May 9 2007, 15:16
|- - Edmundo   Цитата(Serg76 @ May 9 2007, 18:44) 1. Сдв...   May 9 2007, 15:30
|- - IgorKossak   Цитата(Serg76 @ May 9 2007, 17:44) Прошу ...   May 10 2007, 20:36
- - Laksus   Цитата(Serg76 @ May 9 2007, 14:23) Как мн...   May 9 2007, 15:00
- - xemul   Тупое решение в лоб Кодt = x; x &= 0x3f; if...   May 9 2007, 15:27
|- - singlskv   Цитата(kv_addr @ May 11 2007, 19:50) Пыта...   May 11 2007, 16:39
|- - kv_addr   Цитата(singlskv @ May 11 2007, 19:39) Дык...   May 11 2007, 20:13
|- - singlskv   Цитата(kv_addr @ May 12 2007, 00:13) IAR-...   May 11 2007, 21:05
|- - kv_addr   Цитата(singlskv @ May 11 2007, 23:20) А у...   May 11 2007, 21:07
|- - singlskv   Цитата(kv_addr @ May 12 2007, 01:07) Пров...   May 11 2007, 21:22
|- - kv_addr   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 11 2007, 22:35
|- - Александр Куличок   Цитата(singlskv @ May 12 2007, 00:22) А в...   May 12 2007, 15:33
|- - singlskv   Цитата(Александр Куличок @ May 12 2007, 19...   May 12 2007, 21:12
- - Punk   Цитата(ps1x @ May 9 2007, 12:43) Допустим...   May 10 2007, 14:06
|- - Dog Pawlowa   Два порта контроллера закольцевать еще не предлага...   May 10 2007, 14:20
- - ae_   Цитата(ps1x @ May 9 2007, 18:43) Допустим...   May 11 2007, 02:04
|- - kv_addr   Цитата(ae_ @ May 11 2007, 05:04) асм, три...   May 11 2007, 14:47
- - defunct   ЦитатаВедь и переносимость программ, написанных на...   May 12 2007, 00:15
|- - kv_addr   Цитата(defunct @ May 12 2007, 03:15) Позв...   May 12 2007, 02:01
|- - defunct   Цитата(kv_addr @ May 12 2007, 04:01) Но 1...   May 12 2007, 02:42
|- - kv_addr   Цитата(defunct @ May 12 2007, 05:42) Прот...   May 12 2007, 04:01
|- - defunct   Цитата(kv_addr @ May 12 2007, 06:01) IMHO...   May 12 2007, 12:16
- - singlskv   Видимо самый быстрый вариант на С будет таким: Код...   May 12 2007, 12:05
- - sensor_ua   Цитатапрограммная реализация encoder'a/decoder...   May 12 2007, 15:09
|- - kv_addr   Цитата(sensor_ua @ May 12 2007, 18:09) Ду...   May 12 2007, 23:08
- - Александр Куличок   ЦитатаВсе правильно, в варианте с битом 7, компиля...   May 13 2007, 07:05


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 12:13
Рейтинг@Mail.ru


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