Отговори на тема  [ 8 мнения ] 
Реверсиране на регистър в асемблер 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Реверсиране на регистър в асемблер
Здравейте!
Искам да реверсирам съдържанието на един регистър в асемблер; т.е. най_старшия да стане най_младши.
Знам как бих го направил на "С", но тук не мога да се оправя с променливите, който zадават номерата на битовете в регистрите.
Пробвах ги като регистри(NoBIT equ 21h......), като променливи ссщо(variable NoBIT....), но то не става. Някой може ли да ми даде идея как да стане?
Код:
REVERCE
   CLRF   RESULT
   MOVLW   D'7'
   MOVWF   NoBIT
   MOVLW   D'0'
   MOVWF   NoBIT1
   
LOOP
   BTFSC  AKK1,NoBIT
   BSF         RESULT,NoBIT1
   INCF    NoBIT1,F
   DECFSZ    NoBIT,F         
   GOTO   LOOP


Чет Сеп 27, 2007 11:19 am
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
да си чувал за ротация от където четеш в едната посока където пишеш в другата след 8 ротации си готов

movlw 0x23
movwf dat1
movlw 8
movwf cnt
et2
rlf dat1
rrf dat2
decfsz cnt
goto et2


Чет Сеп 27, 2007 11:28 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение 
Както казват немците"In der Kuerze liegt die Wuerze". Простичко, ама кой ще се сети :) Много ти благодаря, ВСУ :)
И все пак ми е интересно да знам, как посредством променлива мога да указвам номер на бит в даден регистър. Все някога ще ми потрябва...


Чет Сеп 27, 2007 2:07 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Пон Яну 09, 2006 11:32 am
Мнения: 276
Местоположение: Kozloduy
Мнение 
Цитат:
как посредством променлива мога да указвам номер на бит в даден регистър

Просто неможеш, потърси имаше една тема по този въпрос, автора и беше много упорит човек.


Чет Сеп 27, 2007 3:52 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение 
Мисля, че я намерих. А как е най_удачно да изведа данните от един регистър последователно на някой пин.


Чет Сеп 27, 2007 4:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Ротация на регистъра през "С" и ако С=1, пин=1, иначе пин=0...
...или пак с ротация, но си определяш пина по бит 0 или бит 8 (зависи на къде въртиш) на самия регистър.


Чет Сеп 27, 2007 4:31 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
:idea: Добре е все пак да пишеш за КАКЪВ точно контролер става дума, не всеки може да се досети.

movlw 8
movwf cnt
et2
rlf dat1,f

btfsc status,c
bsf port,pin
btfss status,c
bcf port,pin

decfsz cnt
goto et2

edit: Gogo ти е отговорил малко преди мен :)


Чет Сеп 27, 2007 4:32 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение 
аз прочетох отговора. Просто исках да знам дали има по-лесен начин за сериализиране, от това постоянно да се обръщам към carry-то.
Аз иначе съм си съчинил една функцийка, дето отнема толкова ресурси.... Става въпрос за pic12f :)
Благодаря за отговорите.


Чет Сеп 27, 2007 4:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни