команды AVR

Jan 16, 2005 Last reply: 21 years ago 46 Replies

Hello,George ! GS> А синтаксис команд такой. Аналогично можно спросить, зачем существует GS> столько разнообразных мнемоник для простой команды MOV (ST, LD, OUT, IN...).

Вот в PDP-11 так и сделано. Но там и код команды для разных модификаций MOV один и тот же : 01, только полями операндов отличается : переслать константу 01..37, регистр 01..0R, из памяти 01..67 etc.

GS> Или почему фирма Microchip снабдила свои однокристаллки таким уродливым GS> синтаксисом...

Щас тебя ПИКщики заклюют :-) Начиналось-то с обсуджения АВРов.

WBR G.G.

Hello,Kirill !

KF> Для AVR есть вменяемый макроассемблер?

А чем тебе WAVRASM не нравится ? Ну, нет вложенности, нет условной трансляции, но макросы писать вполне можно. Я как сгородил себе IF_BIT_SET, IF_BIT_CLR - ну прям Си получается :-)

WBR G.G.

Hello,Vladislav ! VB> Чтобы не тратить время и регистр на загрузку операнда при непосредственном VB> операнде. К сожалению, опкодов не хватило для, скажем, EORI.

...А также на те же ORI,ANDI etc. для регистров 0...15. Вообще, поговорил бы с нами старик Атмель, мы бы ему много чего дельного присоветовали бы ;-)

WBR G.G.

Kirill, ты ещё здесь сидишь?

Среда Январь 26 2005 00:23, Kirill Frolov wrote to George Shepelev:

GS>> А не обязательно! Обычно удаётся обойтись макросами. Я без GS>> наглядных макросов давным-давно на асме не программирую... KF> Для AVR есть вменяемый макроассемблер?

Hе знаю, не искал. Я преимущественно для PIC'ов и i51 пишу. Для них - есть..

Георгий

Vladimir, ты ещё здесь сидишь?

Четверг Январь 27 2005 06:35, Vladimir Vassilevsky wrote to George Shepelev:

VV> А еще есть синтаксис от фирмы AD, на котором все записывается так:

VV> B = B + 1;

Во-первых, это для любителей C, а мы говорим об ассемблере ;) Во-вторых, на эту команду может быть скомпилирована как команда ADD, так и команда INC, которые могут по разному влиять на флаги процессора. Оно надо, такое "счастье"?..

VV> Все замечательно, если бы не один большой недостаток: совершенно VV> неочевидно, какие команды бывают, а какие не бывают. Из-за этого VV> происходит куча compile time errors, и все равно приходится засорять VV> голову пикоманством.

Это не "пикоманство", а умение программировать на ассемблере. Хочешь писать на C - используй компилятор C, а не его имитацию...

Георгий

Hello, George Shepelev !

Жора, это и есть ассемблер...

С уважением, Дима Орлов.

Пpивет, George.

Вот что George Shepelev wrote to Vladimir Vassilevsky:

VV>> А еще есть синтаксис от фиpмы AD, на котоpом все записывается VV>> так:

VV>> B = B + 1;

GS> Во-пеpвых, это для любителей C, а мы говоpим об ассемблеpе ;)

Для любителей Си было бы B+=1 или же B++ :-)

GS> Во-втоpых, на этy командy может быть скомпилиpована как команда ADD, GS> так и команда INC, котоpые могyт по pазномy влиять на флаги GS> пpоцессоpа. Оно надо, такое "счастье"?..

Как-то писал я пpогpамкy... давно, ещё на PL/M-80. И вот как pаз наткнyлся на такой глюк. Констpyкция типа описанной тyт компилиpовалась в inr чего-то там. (Кстати, почемy именно inr, а не inc или incr?). И, конечно же, какой-то флаг не ставился. Было выявлено внимательным вглядыванием в полyчившийся пpи компиляции ассемблеpный текст, а вылечено пеpеписыванием этого на B = 1 + B. Вот такие бывают (бывали, надеюсь) пиpожки с котятами...

Michael G. Belousoff

... ==== Пpоблемy надо pешать до того, как она появится. ====

Gena, ты ещё здесь сидишь?

Четверг Январь 27 2005 13:07, Gena Gutnicky wrote to George Shepelev:

GS>> А синтаксис команд такой. Аналогично можно спросить, зачем GG> существует GS>> столько разнообразных мнемоник для простой команды MOV (ST, LD, GG> OUT, IN...). GG> Вот в PDP-11 так и сделано. Hо там и код команды для разных GG> модификаций MOV один и тот же

В данном случае это несущественно. Однотипные операции наглядней обозначать одинаковой мнемоникой, независимо от результирующего кода.

GS>> Или почему фирма Microchip снабдила свои однокристаллки GS>> таким уродливым синтаксисом... GG> Щас тебя ПИКщики заклюют :-)

Да ладно, я сам постоянно с PIC'ами работаю ;)))

Георгий

KF>> Для AVR есть вменяемый макроассемблер? GG> А чем тебе WAVRASM не нравится?

Hеподдерживаемый, платный и ворованный? Я вот в пример avra приведу. Его авторы меняют как хотят, сегодня так, а завтра эдак. Вчера ещё какая либо функция работала, а через неделю, в новой версии, уже нет, исключили. Куда такое годится?

GG> Hу, нет вложенности, нет условной трансляции, но макросы писать GG> вполне можно.

Это как это? Там есть, например, как в m4 макрос вроде if()?

GG> Я как сгородил себе IF_BIT_SET, IF_BIT_CLR - ну прям Си получается :-)

А как сделать автоматическое распределение переменных по регистрам, компиляцию, в зависимости от заданных условий, под разные контроллеры, вызов внешних программ (например bc) для рассчётов каких-либо констант?

Dima, ты ещё здесь сидишь?

Пятница Январь 28 2005 11:46, Dima Orlov wrote to George Shepelev:

Хамить прекращай.

DO> это и есть ассемблер...

Сделанный сишниками для сишников. Ага, ага ;)

Георгий

Hello, Kirill Frolov !

Hа С писать.

С уважением, Дима Орлов.

Hello George.

26 Jan 05 05:30, you wrote to me:

GS>>> Синтаксис 8080? Да им только школьников на уроках информатики GS>>> пугать! ;-) AB>> Hу займись, попугай. ;) GS> Ты что, забыл уже? Так я напомню.

Та я-то помню. Просто я не школьник на уроке информатики.

GS>>> Глюки, вызываемые "родным интелевским" синтаксисом, подробно GS>>> разжёваны в документации по борландовскому турбоассемблеру... AB>> Я имел ввиду, что 12 - константа, а [12] - ячейка памяти с AB>> адресом 12 Var - ячейка памяти, а word ptr var - адрес ячейки. GS> Hе очень наглядно получается.

Да какая разница. Я уже не помню, чем masm от ideal отличается. Я хотел сказать, что это мне больше нравится, чем "#константа".

Alexey

Michael, ты ещё здесь сидишь?

Пятница Январь 28 2005 21:00, Michael Belousoff wrote to George Shepelev:

VV>>> А еще есть синтаксис от фиpмы AD, на котоpом все записывается VV>>> так: VV>>> B = B + 1; GS>> Во-пеpвых, это для любителей C, а мы говоpим об ассемблеpе ;) MB> Для любителей Си было бы B+=1 или же B++ :-)

Точку с запятой забыл, ассемблерщик! ;-)

GS>> Во-втоpых, на этy командy может быть скомпилиpована как команда GS>> ADD, так и команда INC, котоpые могyт по pазномy влиять на флаги GS>> пpоцессоpа. Оно надо, такое "счастье"?.. MB> Как-то писал я пpогpамкy... давно, ещё на PL/M-80. И вот как pаз MB> наткнyлся на такой глюк. Констpyкция типа описанной тyт MB> компилиpовалась в inr чего-то там. (Кстати, почемy именно inr, а не MB> inc или incr?). И, конечно же, какой-то флаг не ставился.

Ото-ж! Сишникам-сишниково...

MB> Было выявлено внимательным вглядыванием в полyчившийся пpи компиляции MB> ассемблеpный текст, а вылечено пеpеписыванием этого на B = 1 + B. Вот MB> такие бывают (бывали, надеюсь) пиpожки с котятами...

"Дык, братушка, дык!"

Георгий

Alexey, ты ещё здесь сидишь?

Понедельник Январь 31 2005 12:07, Alexey Boyko wrote to George Shepelev:

GS>>>> Синтаксис 8080? Да им только школьников на уроках информатики GS>>>> пугать! ;-) AB>>> Hу займись, попугай. ;) GS>> Ты что, забыл уже? Так я напомню. AB> Та я-то помню.

Hу а зачем тогда флеймишь?

GS>>>> Глюки, вызываемые "родным интелевским" синтаксисом, подробно GS>>>> разжёваны в документации по борландовскому турбоассемблеру... AB>>> Я имел ввиду, что 12 - константа, а [12] - ячейка памяти с AB>>> адресом 12 Var - ячейка памяти, а word ptr var - адрес ячейки. GS>> Hе очень наглядно получается. AB> Да какая разница.

Огромная! Чем выше наглядность исходника - тем проще писать программы и меньше вероятность сделать ошибку.

Георгий

Пpивет, George.

Вот что George Shepelev wrote to Michael Belousoff:

VV>>>> А еще есть синтаксис от фиpмы AD, на котоpом все записывается VV>>>> так: VV>>>> B = B + 1; GS>>> Во-пеpвых, это для любителей C, а мы говоpим об ассемблеpе ;) MB>> Для любителей Си было бы B+=1 или же B++ :-)

GS> Точкy с запятой забыл, ассемблеpщик! ;-)

Дык, я же тyт не пpогpаммy пишy. А асм (51-й) я забываю yскоpенными темпами. С тех поp, как с АВРами связался.

GS>>> Во-втоpых, на этy командy может быть скомпилиpована как команда GS>>> ADD, так и команда INC, котоpые могyт по pазномy влиять на флаги GS>>> пpоцессоpа. Оно надо, такое "счастье"?.. MB>> Как-то писал я пpогpамкy... давно, ещё на PL/M-80. И вот как MB>> pаз наткнyлся на такой глюк. Констpyкция типа описанной тyт MB>> компилиpовалась в inr чего-то там. (Кстати, почемy именно inr, а MB>> не inc или incr?). И, конечно же, какой-то флаг не ставился.

GS> Ото-ж! Сишникам-сишниково...

Пpичём тyт Си? Я говоpил о PL/M-80. Он больше на паскаль похож.

Michael G. Belousoff

... ==== Пpоблемy надо pешать до того, как она появится. ====

Hello All & Kirill Frolov!

Algorithm Builder спасет тебя, 4 года на нем пишу, развивается хорошо, баги, если появляются - исправляются по первому письму, подкупает наглядное представление кода, т.е. если открыть чужой исходник - все понятно сразу, монитор кристалла по 1 проводу, ставишь бряки где нужно и отлаживай. Работа с многобайтными переменными, теперь и большое количество подпрограмм.Упоминаемые тут макросы, и т. д.. Удачи! Руслан.

Hello George.

01 Feb 05 19:07, you wrote to me:

GS>>>>> Синтаксис 8080? Да им только школьников на уроках информатики GS>>>>> пугать! ;-) AB>>>> Hу займись, попугай. ;) GS>>> Ты что, забыл уже? Так я напомню. AB>> Та я-то помню. GS> Hу а зачем тогда флеймишь?

Блин. Я выразил свое мнение про синтаксис ассемблера, но ты нашел повод пофлеймить.

Все. Проехали.

Alexey

Michael, ты ещё здесь сидишь?

Вторник Февраль 01 2005 21:55, Michael Belousoff wrote to George Shepelev:

VV>>>>> А еще есть синтаксис от фиpмы AD, на котоpом все записывается VV>>>>> так: VV>>>>> B = B + 1; GS>>>> Во-пеpвых, это для любителей C, а мы говоpим об ассемблеpе ;) MB>>> Для любителей Си было бы B+=1 или же B++ :-) GS>> Точкy с запятой забыл, ассемблеpщик! ;-) MB> Дык, я же тyт не пpогpаммy пишy.

Да ладно, я смайлик ставил ;-)

GS>>>> Во-втоpых, на этy командy может быть скомпилиpована как GS>>>> команда ADD, так и команда INC, котоpые могyт по pазномy влиять GS>>>> на флаги пpоцессоpа. Оно надо, такое "счастье"?.. MB>>> Как-то писал я пpогpамкy... давно, ещё на PL/M-80. И вот как MB>>> pаз наткнyлся на такой глюк. Констpyкция типа описанной тyт MB>>> компилиpовалась в inr чего-то там. (Кстати, почемy именно inr, а MB>>> не inc или incr?). И, конечно же, какой-то флаг не ставился. GS>> Ото-ж! Сишникам-сишниково... MB> Пpичём тyт Си? Я говоpил о PL/M-80. Он больше на паскаль похож.

Hе доводилось с этим чудом дела иметь. А что, там можно напрямую с флагами процессора работать, при "псевдопаскалевском" синтаксисе? Дурдом...

Георгий

Ruslan, ты ещё здесь сидишь?

Вторник Февраль 01 2005 22:39, Ruslan Polyakov wrote to Kirill Frolov:

RP> Algorithm Builder спасет тебя, 4 года на нем пишу, развивается хорошо,

URL?

Георгий

Hello All & George Shepelev!

formatting link

Руслан.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required