Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Yurkom
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
1

Асм, условная компиляция

17.04.2014, 17:40. Просмотров 2793. Ответов 11
Метки нет (Все метки)

Студия 4.19, асм2.
Захотелось добавить несколько макросов с условной компиляцией.
Есть ли какая возможность определить принадлежность регистра к младшей (r0-r15) или старшей (r16-r31) половине?
На конструкцию по аналогии с портами, ругается почему-то:
Код
.if ( tmpa < 16 )
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2014, 17:40
Ответы с готовыми решениями:

Условная компиляция в AVR Studio
Пипол, нужен дельный совет, как осуществить такую инструкция #if N == 1...

Асм вставка в Си
Ребята, не подскажите как правильно загружать переменные в асм вставку....

Программа на Асм
LIST P=16F628 #include &lt;P16F628.INC&gt; temp0 EQU H'20' temp1 EQU H'21' ...

Непонятки с портом G (асм)
Люди добрые, помогите! ATmega64-16. У этого МК есть порт G (PG0-PG4). пишу в...

Генератор прямоугольных импульсов на atmega8 (асм)
Прошу помощи, уже не знаю куда написать! Нужно на восьмой атмеге реализовать...

11
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
17.04.2014, 18:32 2
Подзабывать стал. Но пишется примерно так:
Код
.macro set_val
.if @0 > 5
ldi r16, 5
.else
clr r0
.endif
.endmacro
0
Yurkom
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
17.04.2014, 18:48 3
Угу, только вот если в качестве параметра @0 будет какой-нить регистр, то компилятор не берёт эту строку:
Код
.if @0 > 5
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
17.04.2014, 19:03 4
Нафиг, звиняйте. Занят сильно. Нет времени разбираться.
0
Yurkom
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
17.04.2014, 19:29 5
Поясню, чего хочу.
Вот всем известный макрос "константу - в порт"
Код
.macro   outi
.if ( @0 < 0x60 )
ldi   tmpa,@1
out   @0,tmpa
.else
ldi   tmpa,@1
sts   @0,tmpa
.endif
.endm
Хочу аналогичный макрос, но "константу - в регистр"
Код
.macro   ldr
.if ( @0 < 16 )
ldi   tmpa,@1
mov   @0,tmpa
.else
ldi   @0,@1
.endif
.endm
Не работает. Затык на строке условия. Очевидно разные типы: имя регистра сравниваю с числом. Но ведь с портами работает почему-то...
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
17.04.2014, 19:40 6
Попробуйте два варианта.
1 - писать <> rx
2 - У регистров возможно смещение порядкового номера. r0 != 0, а скажем, 0x20. В даташитах все это написано.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
18.04.2014, 00:09 7
Поясню, чего хочу.
Вот всем известный макрос "константу - в порт"
Хочу аналогичный макрос, но "константу - в регистр"
:))) Он же и с регистрами работает.
А для R0-R16 писать макрос-нонсенс.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
18.04.2014, 00:32 8
Не нужно выеживаться, если так стал вопрос, переходите на язык более верхнего уровня... Там уже все схвачено, + издержки...
0
Yurkom
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
18.04.2014, 01:04 9
Знаю, знаю.. Но вот хотелось повыёживаться :-)
Цитата Сообщение от YTYOUT
:))) Он же и с регистрами работает.
У мня не получилось чего-то, как ни извращался...
0
S_Otix
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 537
18.04.2014, 02:08 10
Код
.list
.listmac

.macro mov_r
ldi r@0 ,@1
.endmacro
mov_r 16,5
Код
                 .list
.listmac

.macro mov_r
ldi r@0 ,@1
.endmacro
+
000000 e005     +ldi r16 , 5
mov_r 16,5
0
Yurkom
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
18.04.2014, 13:59 11
А, ну если только так... Только для практического применения это не подойдёт. Ибо регистры, обычно, как-то обзываются, а не в виде R1...Rn.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
19.04.2014, 15:08 12
Цитата Сообщение от YurkoM
Знаю, знаю.. Но вот хотелось повыёживаться :-)
Цитата Сообщение от YTYOUT
:))) Он же и с регистрами работает.
У мня не получилось чего-то, как ни извращался...
А у Вас tmpa назначен?
0
19.04.2014, 15:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 15:08

компиляция Bootloadera.
добрый день. я использую проект из статьси...

Оптимальная компиляция в WinAVR
Коллеги вопрос. Как в WinAVR (AVRStudyo4) скомпилировать проект, исключив в hex...

компиляция avr-gcc
Народ подскажите как компилировать проекты написанные с помощью LUFA. 1 из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru