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

 
 
> Макрос на C содержит asm., Передача параметра
Alex ma
сообщение Dec 24 2006, 13:27
Сообщение #1


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

Группа: Новичок
Сообщений: 81
Регистрация: 9-08-06
Пользователь №: 19 445



Необходимо загрузить константу в Z регистр и косвенно вызвать подпрограмму.
а – константа.

Сам макрос:
#define IcallFunc(a)\
{\
asm ("LDI r30, Low(a)\n LDI r31, High(a)\n ICALL");\
}\

Применение:
IcallFunc (0х0104); по идеи вызывается подпрограмма по адресу 0х0104.

Пишет:
Error[Og005]: Unknown symbol in inline assembly: "a"

Если объявить переменную а,
unsigned int a; тогда
IcallFunc (0х0104), нормально компилируется, но!

17: IcallFunc (0x0104);
+0000008D: EFE7 LDI R30,0xF7 Load immediate
+0000008E: E0F0 LDI R31,0x00 Load immediate
+0000008F: 9509 ICALL Indirect call to (Z)
В место константы 0х0104, загружает в r30, r31 адрес SRAM где расположена переменная а – 0x00F7 SRAM, значение переменной 0x0000.
Как заставить загружать константу 0х0104 а, не адрес SRAM где расположена переменная , мне не понятно.
Go to the top of the page
 
+Quote Post



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

 


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


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