команды AVR

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Hi All!

А что это в AVR есть отдельно команды с операндами-числами и отдельно с
операндами-регистрами? Я имею ввиду ANDI/AND, ORI/OR и т.д. Hичего различного
не нашел. Команды из одной пары выполняются за одинаковое число тактов, флаги
меняются те же самые. Зачем же дублировать команды?

Спасибо.


Bye All!
... А ты воспользовался пакетом FTN?

команды AVR
                           Пpивет, Sergei!

*** 16 Jan 05 22:43, Sergei Tovpeko wrote to All:

 ST> А что это в AVR есть отдельно команды с операндами-числами и отдельно
 ST> с операндами-регистрами? Я имею ввиду ANDI/AND, ORI/OR и т.д. Hичего
 ST> различного не нашел. Команды из одной пары выполняются за одинаковое
 ST> число тактов, флаги меняются те же самые. Зачем же дублировать
 ST> команды?

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

                                      с уважением Владислав

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

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

WBR G.G.

--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

команды AVR

            Приветствую, Sergei!

 ST> А что это в AVR есть отдельно команды с операндами-числами и отдельно с
 ST> операндами-регистрами? Я имею ввиду ANDI/AND, ORI/OR и т.д. Hичего
 ST> различногоне нашел. Команды из одной пары выполняются за одинаковое
 ST> число тактов, флагименяются те же самые. Зачем же дублировать команды?

У АВР-ов много команд дублируется. Считается - для удобства, а как по мне,
так это лишнее.

        С уважением, Vladimir AKA 3VC.


команды AVR

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


Понедельник Январь 17 2005 00:02, Vladimir Voronin wrote to Sergei Tovpeko:

 VV> У АВР-ов много команд дублируется.

 А ещё больше - попросту макросы/синонимы.


                                                   Георгий


команды AVR
Hello George.

17 Jan 05 07:19, you wrote to Vladimir Voronin:

 VV>> У АВР-ов много команд дублируется.
 GS>  А ещё больше - попросту макросы/синонимы.

Что-то вы все не то говорите. AND и ANDI - _разные_ команды. У них разные
операнды, разный формат.

Лучше обсуждайте, почему у них мнемоник две, а не одна (AND).

Alexey


команды AVR

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


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

 VV>>> У АВР-ов много команд дублируется.
 GS>>  А ещё больше - попросту макросы/синонимы.
 AB> Что-то вы все не то говорите. AND и ANDI - _разные_ команды.

 Погляди команды установки/сброса бита...

 AB> У них разные операнды, разный формат.

 AB> Лучше обсуждайте, почему у них мнемоник две, а не одна (AND).

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

 В эту же тему. Очень наглядно сравнить, к примеру, мнемоники команд
процессора 8080 с аналогичными для Z80...


                                                   Георгий


Re: команды AVR

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


Среда Январь 19 2005 13:47, Alexey Boyko wrote to George Shepelev:

 GS>>  А синтаксис команд такой. Аналогично можно спросить, зачем
 GS>> существует
 GS>> столько разнообразных мнемоник для простой команды MOV (ST, LD,
 GS>> OUT, IN...). Или почему фирма Microchip снабдила свои
 GS>> однокристаллки таким уродливым синтаксисом...
 AB> Я это воспринимаю как факт.

 Так это и есть факт ;) Hе мешающий подумать, как бы всё это можно
было сделать проще/нагляднее...


                                                   Георгий


команды AVR
Hello George.

20 Jan 05 22:27, you wrote to me:

 GS>>> столько разнообразных мнемоник для простой команды MOV (ST, LD,
 GS>>> OUT, IN...). Или почему фирма Microchip снабдила свои
 GS>>> однокристаллки таким уродливым синтаксисом...
 AB>> Я это воспринимаю как факт.
 GS>  Так это и есть факт ;) Hе мешающий подумать, как бы всё это можно
 GS> было сделать проще/нагляднее...

Так в том то и дело, что свой ассемблер мне писать влом. А обсуждать кривость
атмелевских софтописателей уже надоело.

ps: Мне, например, больше нравится интелевская система, которая на 8080 и x86.
Так что теперь AVR не импользовать?

Alexey


команды AVR

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


Пятница Январь 21 2005 12:22, Alexey Boyko wrote to George Shepelev:

 GS>>>> столько разнообразных мнемоник для простой команды MOV (ST, LD,
 GS>>>> OUT, IN...). Или почему фирма Microchip снабдила свои
 GS>>>> однокристаллки таким уродливым синтаксисом...
 AB>>> Я это воспринимаю как факт.
 GS>>  Так это и есть факт ;) Hе мешающий подумать, как бы всё это
 GS>> можно было сделать проще/нагляднее...
 AB> Так в том то и дело, что свой ассемблер мне писать влом.

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


 AB> ps: Мне, например, больше нравится интелевская система, которая на
 AB> 8080 и x86.

 Синтаксис 8080? Да им только школьников на уроках информатики пугать! ;-)

 Глюки, вызываемые "родным интелевским" синтаксисом, подробно разжёваны
в документации по борландовскому турбоассемблеру...


                                                   Георгий


команды AVR
Hello George.

23 Jan 05 01:33, you wrote to me:

 AB>> ps: Мне, например, больше нравится интелевская система, которая
 AB>> на 8080 и x86.
 GS>  Синтаксис 8080? Да им только школьников на уроках информатики пугать!
 GS> ;-)

Hу займись, попугай. ;)

 GS>  Глюки, вызываемые "родным интелевским" синтаксисом, подробно
 GS> разжёваны в документации по борландовскому турбоассемблеру...

Я имел ввиду, что 12 - константа, а [12] - ячейка памяти с адресом 12

Var - ячейка памяти, а word ptr var - адрес ячейки.

Alexey


Синтаксис асма (было: команды AVR)

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


Понедельник Январь 24 2005 11:37, Alexey Boyko wrote to George Shepelev:

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

 Ты что, забыл уже? Так я напомню. Очень наглядная демонстрация того,
что экономить нужно не нажатия на клавиши, а мозги программиста.
Запись слева (мнемоники 8080) понять сходу невозможно, придётся
лезть в таблицу. Запись справа (то-же в мнемониках Z80) трудно
сделать более наглядной. Пример выглядит как комментарий к "родному"
"интеловскому" коду ;)

           8080                    Z80
-----------------------------------------------------
        XCHG                    EX      DE,HL
        XTHL                    EX      (SP),HL
        INC     B               INC     B
        INX     B               INC     BC
        ADD     B               ADD     A,B
        ADI     n               ADD     A,n
        ADD     M               ADD     A,(HL)
        DAD     H               ADD     HL,HL
        DAD     SP              ADD     HL,SP
        LDAX    B               LD      A,(BC)
        STAX    B               LD      (BC),A
        LDA     nn              LD      A,(nn)
        MVI     A,B             LD      A,B
        MVI     M,n             LD      (HL),n
        MOV     M,C             LD      (HL),C
        LXI     D,nn            LD      DE,nn
        LXI     SP,nn           LD      SP,nn
        LHLD    nn              LD      HL,(nn)
        SPHL                    LD      SP,HL
        PUSH    PSW             PUSH    AF
        POP     D               POP     DE
        RC                      RETC
        RST     5               RST     28h
        PCHL                    JP      (HL)


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

 Hе очень наглядно получается.

           MASM                     TASM Ideal
------------------------------------------------------
        MOV     AX,con             MOV     AX,con           значение константы
        MOV     AX,var             MOV     AX,[var]         значение переменной
        MOV     AX,word ptr var    MOV     AX,offset var    смещение переменной

 "Идеальный" вариант исключает случайный "зевок" "заклинания" word ptr.
Ведь кажется, и так ясно, что в AX помещается word ;) Hе говоря уж о том,
что слово offset может нелишний раз напомнить, что есть ещё и segment...


 Можно ещё одним способом продемонстрировать преимущество второго варианта.
Строчки примера выполняют _аналогичные_ действия, представляется очень
логичным, чтобы у них была единообразная символика (работа со значением
переменной) - скобочки просто напрашиваются:

        MOV     BX,word ptr var    MOV     BX,offset var
        MOV     AX,[BX]            MOV     AX,[BX]

        MOV     AX,var             MOV     AX,[var]




                                                   Георгий


Синтаксис асма (было: команды AVR)
Wed Jan 26 2005 05:30, George Shepelev wrote to Alexey Boyko:

 GS>  Ты что, забыл уже? Так я напомню. Очень наглядная демонстрация того,
 GS> что экономить нужно не нажатия на клавиши, а мозги программиста.

 GS>         INC     B               INC     B
 GS>         INX     B               INC     BC
 GS>         ADD     B               ADD     A,B
 GS>         ADI     n               ADD     A,n
 GS>         ADD     M               ADD     A,(HL)
 GS>         DAD     H               ADD     HL,HL
 GS>         DAD     SP              ADD     HL,SP
 

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

  B = B + 1;
  BC = BC + 1;
  A  = A + B
  A  = A + n;
  A  = A + *HL;
  HL = HL + HL;
  HL = HL + SP;

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

 VLV

 "Быть честным - лучший способ оставаться бедным"  (c) Hаполеон Бонапарт


Синтаксис асма (было: команды AVR)

   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, а не его имитацию...


                                                   Георгий


Синтаксис асма (было: команды AVR)
Hello, George Shepelev !

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

 >  VV>   B = B + 1;

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

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

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


Синтаксис асма (было: команды AVR)

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


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

 >>  VV>   B = B + 1;
 >>  Во-первых, это для любителей C, а мы говорим об ассемблере ;)
 DO> Жора,

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

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

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


                                                   Георгий


Синтаксис асма (было: команды AVR)
  П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ешать до того, как она появится. ====

Синтаксис асма (было: команды AVR)

   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ожки с котятами...

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


                                                   Георгий


Синтаксис асма (было: команды AVR)
  П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ешать до того, как она появится. ====

Синтаксис асма (было: команды AVR)

   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е доводилось с этим чудом дела иметь. А что, там можно напрямую
с флагами процессора работать, при "псевдопаскалевском" синтаксисе?
Дурдом...



                                                   Георгий


Site Timeline