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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

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

Сообщение Мikа »

Понял, большое спасибо!

UPD: Щас подумал о том, а что если переходить на далёкие метки через rjmp, посмотрел Евстифеева, команда работает от -2047 до +2047.

В голове такая конструкция:

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

Far-Far-Away: ldi Temp1, 0b00000000 ;Очень далёкая метка, на которую нам просто необходимо перейти

;Много-много кода

cpi Temp1, 0b00000000
brne notzero
rjmp куда-то там

notzero: rjmp Far-Far-Away


Это не является дурным тоном в ассемблере?
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

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

Сообщение Мikа »

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

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

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

Ну я так и делаю — с помощью brne перепрыгиваю через rjmp/jmp.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

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

Сообщение Мikа »

А если человеческим языком, то в чём разница между rjmp и jmp?

[img][url=http://img.radiokot.ru/files/86665/medium/16pxl06xz.png][/img] <--- а чё она не отображается? :D

Описание команд абсолютно одинаковое.

Вижу различия в операции, коде операции, различии количества тактов на выполнения. И одна в Tiny есть, а второй нет.

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

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

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

Мikа писал(а):в чём разница между rjmp и jmp

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

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

Сообщение Engineer_Keen »

кстати, там на картинке с JMP ошибка, он не от -2047, а от 0 работает, т.к. это абсолютный адрес...
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

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

Сообщение Мikа »

Gudd-Head писал(а):... и (самое главное) дальности действия.


:dont_know: Это я пропустил, мельком посмотрел на параметр, увидел -2047 и решил, что одинаково. Тогда всё понятно, очередной раз спасибо!

Engineer_Keen писал(а):кстати, там на картинке с JMP ошибка, он не от -2047, а от 0 работает, т.к. это абсолютный адрес...


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

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

Сообщение Engineer_Keen »

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

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

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

Тогда и CALL криво описана
PC = k
0 <= k < 64K
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Не знаю, у меня CALL правильно описана (2-е издание, 2005г.)...
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

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

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

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

У меня оно же.
Значит, это я туплю. И в JMP Должно быть до 64К, а не 2М.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Gudd-Head писал(а):Тогда и CALL криво описана
PC = k
0 <= k < 64K

Правильно! 64 килослова, т.е. 128 килобайт.
Или я что-то не уловил? :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

я не туда посмотрел, нижний-то предел верный стоит - 0, а вот верхний должен быть 4М (и в CALL и в JMP).
1001 010k kkkk 110k
kkkk kkkk kkkk kkkk
k - 22 штуки, следовательно 2^22 ~ 4М
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Вот и я что-то в степенях двойки запутался :)
У меня вообще 8М получается (под k отводится 22 бита, а при всех "1" это 2^23-1).
А 64К адресуют IJMP и ICALL.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Gudd-Head, так как адресуются слова машинных команд, то, всё-таки, 2^22 = 4M слов.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Т.к. адресуются слова, то 2^23-1 = 8М слов, т.е. 16Мбайт.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение a_skr »

0b 11 1111 1111 1111 1111 1111 = 2^22 - 1 = 4194303 = 4М - 1 => 4М слов
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Ну да. Говорю же, запутался :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Мikа
Потрогал лапой паяльник
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

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

Сообщение Мikа »

a_skr писал(а):0b 11 1111 1111 1111 1111 1111 = 2^22 - 1 = 4194303 = 4М - 1 => 4М слов


Просто ворвался в топик и всех уложил :D

Сорри за флуд, не удержался. Пытаюсь вникнуть в написанное вами :D
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Ответить

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