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

 
 
> Из одного ASM в другой
Oleg_IT
сообщение Jan 31 2006, 08:38
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Есть ASM текст, скорей всего на AVR Studio (не написано ни чего об этом). Нужно перевести в IAR-овский.
Почти всё понятно, но есть но…

Исходный текст
.def temp0 =R20 ;temporary register
………
push temp0
………
in temp0,UDR ;put to temp0 received data from UART
………

Переведённый. Пользовался документацией от IAR (Версия 4.11)
#define temp0 R20 ;temporary register
push temp0 Ошибки нет
………
in temp0,UDR ;put to temp0 received data from UART Ошибка Error[43]: Illegal effective address …\Test\Test.asm 253

Если ставлю вместо temp0 R20, т.е.
in R20,UDR ;put to temp0 received data from UART
всё нормально.
Похоже в некоторых командах дефайн компилятор не видит.

Этих tempX очень много и перебивать все не хочется.
Что делать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_IT
сообщение Jan 31 2006, 10:52
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Спасибо, сишные комментарии помогли.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jan 31 2006, 13:23
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Прошу прощения ещё две ошибки не понятные мне

Определение

RAMEND128 EQU 96+127
MAXUSBBYTES EQU 14
…………………….
OutputBufferBegin EQU RAMEND128-MAXUSBBYTES-2 //;compare of transmitting buffer
AckBufferBegin EQU OutputBufferBegin-3 //;compare of transmitting buffer Ack

При использовании
sts ACKBufferBegin+0,temp0 ;SOP byte

Дает ошибку
Error[50]: Undefined symbol:'ACKBufferBegin' …\Test\ Test.asm 703
Почему?

Вторая ошибка
ldi temp0,E2END+1 ;number my byte answers to temp0 - entire length of EEPROM

Определение из iom32.h
#define E2END 0x03FF

Ошибка
Error[403]: Number out of range. Valid range is -128 (-0x80) to 255 (0xFF). …\Test\ Test.asm 1335

А тут что не так?
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 31 2006, 14:29
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Ошибка
Error[403]: Number out of range. Valid range is -128 (-0x80) to 255 (0xFF). …\Test\ Test.asm 1335


В 8-ми битный регистр нельзя запихать число больше 255.
ldi temp0, high( E2END + 1)


Насчет первой ошибке попробуйте вручную цифрой прописать чему равен AckBufferBegin.
Если не поможет - разместить переменные в .dseg, вместо использования адресных констант.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:32
Рейтинг@Mail.ru


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