команды AVR

Hi All!

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

Спасибо.

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

Reply to
Sergei Tovpeko
Loading thread data ...

Пpивет, Sergei!

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

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

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

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

Reply to
Vladislav Baliasov

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

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

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

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

Reply to
Vladimir Voronin

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

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

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

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

Георгий

Reply to
George Shepelev

Hello George.

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

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

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

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

Alexey

Reply to
Alexey Boyko
17-Jan-05 17:16 Alexey Boyko wrote to George Shepelev:

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

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

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

Если я правильно понял, то исходный вопрос как раз и состоял в том, почему есть and r16,r17 andi r17,5 вместо, скажем and r16,r17 and r16,#5

wbr,

Reply to
Oleksandr Redchuk

Hello Oleksandr.

18 Jan 05 00:44, you wrote to me:

AB>> Лучше обсуждайте, почему у них мнемоник две, а не одна (AND). OR> Если я правильно понял, то исходный вопрос как раз и состоял в том, OR> почему есть OR> and r16,r17 OR> andi r17,5 OR> вместо, скажем OR> and r16,r17 OR> and r16,#5

Я тоже так понял, но обсуждение уехало куда-то в сторону.

Alexey

Reply to
Alexey Boyko

Hi Alex!

ST>>> Зачем же дублировать команды?

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

AM> ИМХО Сергей хотел сказать, что незачем было придумывать две разных AM> мненоники. Было бы удобнее писать AND r0,#25 вместо ANDI r0,25.

Спасибо, всем ответившим. В первом посте меня интересовало велика ли разница между командами AND и ANDI. В случае ANDI экономится время на загрузку данных в регистр, ну и, конечно, сам регистр. Понятно.

Hу а теперь ко второму... AND/ANDI - разные команды или разные мнемоники для одной команды?? У меня нет таблицы опкодов под рукой. Так бы можно было проверить разные опкоды или они одинаковые для мнемоник AND и ANDI.

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

Reply to
Sergei Tovpeko

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...

Георгий

Reply to
George Shepelev

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

Вторник Январь 18 2005 17:38, Alex Mogilnikov wrote to Vladislav Baliasov:

AM> ИМХО Сергей хотел сказать, что незачем было придумывать две разных AM> мненоники. Было бы удобнее писать AND r0,#25 вместо ANDI r0,25.

А по-моему было бы удобнее писать AND r0,25, а "косвенность" адресации указывать скобочками, как в TASM (Ideal mode). Самый наглядный был синтаксис, жаль, не прижился...

Георгий

Reply to
George Shepelev

Hello Sergei.

18 Jan 05 20:06, you wrote to Alex Mogilnikov:

ST> Hу а теперь ко второму... AND/ANDI - разные команды или разные мнемоники ST> для одной команды?? У меня нет таблицы опкодов под рукой. Так бы можно ST> было проверить разные опкоды или они одинаковые для мнемоник AND и ANDI.

and

16-bit Opcode: 0010 00rd dddd rrrr

andi

16-bit Opcode: 0111 KKKK dddd KKKK

Alexey

Reply to
Alexey Gushin

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

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

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

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

Георгий

Reply to
George Shepelev

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

Среда Январь 19 2005 21:51, Oleksandr Redchuk wrote to George Shepelev:

AM>>> ИМХО Сергей хотел сказать, что незачем было придумывать две AM>>> разных мненоники. Было бы удобнее писать AND r0,#25 вместо ANDI AM>>> r0,25. GS>> А по-моему было бы удобнее писать AND r0,25, а "косвенность" GS>> адресации указывать скобочками, как в TASM (Ideal mode). Самый GS>> наглядный был синтаксис, жаль, не прижился... OR> Как по мне, то и and r0,25 и and r0,#25 и даже andi r0, 25 было бы OR> просто превосходно... тогда как можно только начиная с r16 :-)

Hу, это уже к вопросу о кривизне архитектуры AVR'ок. Это мне в своё время тоже очень не понравилось, я с ними постарался дела не иметь, так что наизусть все нюансы не помню :-/

Георгий

Reply to
George Shepelev

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

Reply to
Alexey Boyko

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? Да им только школьников на уроках информатики пугать! ;-)

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

Георгий

Reply to
George Shepelev

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

Reply to
Alexey Boyko

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

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

Reply to
Kirill Frolov

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]

Георгий

Reply to
George Shepelev

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky

Привет George!

Wednesday January 26 2005 05:30, George Shepelev wrote to Alexey Boyko:

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

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

Мнемоники Z80 после мнемоник 8080 - это то же самое что 8051 после 8048 или Си/Паскаль после ассемблера....

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
, ftp://altor.sytes.net

Reply to
Alexander Torres

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.