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 |
Ответы с готовыми решениями:
11
Условная компиляция в AVR Studio Асм вставка в Си Программа на Асм Непонятки с портом G (асм) Генератор прямоугольных импульсов на atmega8 (асм) |
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 |
Знаю, знаю.. Но вот хотелось повыёживаться :-)
![]()
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 |
![]() А у Вас tmpa назначен?
0
|
19.04.2014, 15:08 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
19.04.2014, 15:08 |
компиляция Bootloadera. Оптимальная компиляция в WinAVR компиляция avr-gcc Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |