Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Так же, как и складывать/вычитать.
пусть:

Код: Выделить всё

var1_0, var1_1, var1_2 - одна трёхбайтная переменная (в регистрах),
var2_0, var2_1, var2_2 - вторая.
Сравнение будет выглядеть очень просто:
cp var1_0,var2_0
cpc var1_1,var2_1
cpc var1_2,var2_2
ну а дальше в зависимости от флага C переход на метку...
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение pyzhman »

Раз три байта, то значит в каком-то из них младшие разряды, в каком-то средние, в каком-то старшие ханятся. Вот и сравнивайте поразрядно.
Docendo discimus
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Как в Студии выносить процедуры и функции в отдельный файл (и потом подключать их)?
Где и в каком порядке они будут находиться в итоге? Можно ли задать им местоположение?
Если у меня в основном файле будет массив данных, не наложатся ли они друг на друга?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Engineer_Keen »

Создать файл, вбить в него нужные процедуры, сохранить с именем *.asm, в главном файле проекта подключить директивой .include.
Код вставится ровно в то место, где будет стоять директива .include. Все директивы org выполняются также как и в одном файле, так что если с ними не накосячить, то ничего никуда не наложится, в противном случае компилятор все равно ругнется.
Если в файле только макросы и определения, то имеет смысл ставить до основного кода (например сразу за .include "[имя контроллера]def.inc".
Последний раз редактировалось Engineer_Keen Чт фев 27, 2014 11:49:44, всего редактировалось 1 раз.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

А вставятся они в том месте, где будет этот самый .include
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

О как :)
И вставляться этот файл будет целиком?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Да, как будто сделать копипаст содержимого в это место.
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

Подскажите пожалуйста новичку, в avr studio 4.19 .include "m168PAdef.inc"
.def Temp = R16
.cseg
.org 0
ldi Temp, low(RAMEND)
out SPL, Temp
ldi Temp, high(RAMEND)
out SPH, Temp
ldi Temp, 1
push Temp
pop Temp ;Temp=0xE0
nop
Почему возвращается из стека неправильное значение?
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

А как правильно?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Не, про IN/OUT я ступил. Дело не в этом.
Последний раз редактировалось Gudd-Head Пт фев 28, 2014 11:03:50, всего редактировалось 1 раз.
Причина: Ошибся
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

И как надо обратиться к стеку?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Дело не в том, как обратиться к стеку, а в том что в подключаемом файле ошибка. Попробуйте вбить адрес стека вручную:

Код: Выделить всё

 ldi Temp, low(0x4FF) 
 out SPL, Temp
 ldi Temp, high(0x4FF)
 out SPH, Temp
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

Ничего не изменилось.
Возвращает то-же значение.


А, нет все получилось. Спасибо!
Последний раз редактировалось barok22 Пт фев 28, 2014 10:51:45, всего редактировалось 1 раз.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Вы в железе или в симуляторе смотрите?
Кстати, в ДШ тоже непонятная фигня с адресами SRAM:
Изображение
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

Я смотрю в симуляторе. Сделал новый проект, и то-же мой код (и ваш тоже) перестал выдавать ошибку.
В картинке вроде для 168PA третье значение. непонятное мне.
Вроде не было варнингов, а появились.
AVR Simulator: Invalid opcode 0xffff at address 0x000008
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

barok22 писал(а):AVR Simulator: Invalid opcode 0xffff at address 0x000008

Это у вас в симуляторе код закончился на 8-й команде. Чтобы такого не было, зацикливайте программу в конце командой
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
barok22
Родился
Сообщения: 11
Зарегистрирован: Пт фев 28, 2014 09:04:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение barok22 »

Варнинги исчезли, все в порядке, спасибо.
Значения в картинке не совпадают с текстом:
The 32 general purpose working registers, 64 I/O Registers, 160 Extended I/O Registers, and
the 512/1024/1024/2048 bytes of internal data SRAM in the ATmega48PA/88PA/168PA/328P
are all accessible through all these addressing modes.
Как узнать, сколько же памяти в моей 168PA?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Engineer_Keen »

barok22 писал(а):Как узнать, сколько же памяти в моей 168PA?

Найти даташит без опечаток :idea:
А вообще килобайт там...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15545
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BOB51 »

Просмотреть не только даташит, не и ерраты! 8)
И самое главное выбрать соответствующие *.inc фйлы для исходника (или их подкорректировать).
Последний раз редактировалось BOB51 Пт фев 28, 2014 12:28:16, всего редактировалось 1 раз.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Engineer_Keen писал(а):Найти даташит без опечаток

Да. В посл. ДШ исправлено.
SRAM с адреса 100h по 4FFh — 1024 байта.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «AVR»