Страница 1 из 2

команды add, add ???

Добавлено: Вт фев 06, 2007 21:19:32
asd
Не могу разобраться как работают вот эти команды:
add r1,r2
adc r3,r4
Кто знает, объясните как-нибудь по понятней.

Добавлено: Вт фев 06, 2007 21:39:48
Мышонок
Если это единственный вопрос, то его было бы уместнее задать в этой теме: http://www.radiokot.ru/forum/viewtopic.php?t=32 . На первый раз прощаю, при повторении - заработаешь флудимость!

Добавлено: Вт фев 06, 2007 21:44:50
ARV
Могу ошибиться, т.к. не сказано о каком асме идет речь, но первая суммирует r1 и r2 и результат помещает в r1, а вторая не только прибавляет к r3 значение r4, но еще прибавляет значение флага переноса С, т.е. r3=r3+r4+С
а в некоторых ассемблерах вторая команда может прибавлять к r3 константу r4.

Добавлено: Чт фев 08, 2007 12:47:38
asd
что за флаг переноса ?

Добавлено: Чт фев 08, 2007 15:38:48
moLCHec
Флаг переноса устанавливается когда результат сложения больше 0хFF, Парой эти команда используюют для сложения 16-ти разрядных чисел. т.е. складываешь сначало младшие биты add, затем при сложении старших adc к результату придовляется флаг переноса 1 или 0.

Добавлено: Чт фев 15, 2007 17:49:36
asd
а это что за команды .macro и .endmacro ?

Добавлено: Чт фев 15, 2007 19:58:30
moLCHec
asd если не ошибаюся начало и конец макроса. Уже не помню давно с этим не сталкивался вот ARV должен знать. Вроде макрос это что то типа функции в асме. Надо по контексту посмотреть и логически попробовать заключить.

Добавлено: Пт фев 16, 2007 19:12:11
asd
ARV, AVRStudio на английском - мне не подходит.

А понятный учебник ассемблера ориентированный на МК я не могу найти , все они для PC. Если не сложно дайте ссылку, или если есть у вас - дайте качать.

Добавлено: Пт фев 16, 2007 19:22:20
ARV
asd писал(а):ARV, AVRStudio на английском - мне не подходит.
А понятный учебник ассемблера ориентированный на МК я не могу найти , все они для PC. Если не сложно дайте ссылку, или если есть у вас - дайте качать.
1. Программист, не умеющий прочесть пары слов по-английски - это нонсенс! Надо учить... :)
2. Не поверю, что нельзя найти информации на русском по ассемблеру хоть для AVR, хоть для чего-то еще. Могу посоветовать одну из многих книг: А.В.Евстигнеев "Микроконтроллеры AVR семейства Classic фирмы Atmel" - что касается описания команд ассемблера, в этой книге все прилично описано, а вот в некоторых других главах есть ошибки. Книгу поищите в инете - уверен, найдете, например, гляньте тут: http://lord-n.narod.ru/walla.html
3. "Ассемблер, ориентированный на МК" - так же нонсенс, т.к. ассемблер - это аппаратно-зависимый язык, для каждого МК он свой, хотя идеи и принципы общие. Если осилите ассемблер для PC, то уж для МК освоите элементарно!

Добавлено: Пт фев 16, 2007 20:34:18
moLCHec
А.В.Евстигнеев реальная книга я по ней авры изучаю просто и доступно!!!! и по той сцылке эта книга есть сам видел

Добавлено: Пт фев 16, 2007 23:03:00
asd
AVR, вот посмотрите программу , что это @1, @0 . В самом начале, в макросах.

Добавлено: Пт фев 16, 2007 23:08:52
Abakt
asd писал(а):что это @1, @0
наверно адреса 1 и 0 в памяти.

Добавлено: Пт фев 16, 2007 23:16:04
Abakt
moLCHec писал(а):А.В.Евстигнеев реальная книга
а не Ефстифеев ?

Добавлено: Сб фев 17, 2007 00:33:47
Abakt
Справка по ассемблеру для AVR на русском языке.
http://electronix.ru/forum/index.php?s= ... st&id=9434

Добавлено: Сб фев 17, 2007 08:45:02
moLCHec
Получается функция как в Си???

PS мастер класс от ARV)))))

Добавлено: Сб фев 17, 2007 09:17:25
ARV
Макрос - это не совсем аналого функци Си, хотя кое-что очень похоже.
Во-первых, функция исползует реализацию в виде rcall-ret, то есть на всю программу - один код, который может вызываться 100 раз. Макрос же при 100-кратном использовании 100 раз повторит в коде собственные команды.
Во-вторых, в функцию передаются реальные параметры, т.е. какие-то ЧИСЛА, которые загоняются в регистры или в стек перед rcall. /Макрос же использует подстановки, т.е. если написано .macro MyMacro, то когда вы будете использовать в коде своей проги MyMacro r1, 125 - компилятор подставит в это место код макроса, в котором все @0 будут заменены на r1, а все @1 - на 125, и все.
Макрос имеет перед функцией Си преимущество в том, что не тратит стек и память, а так же дает более скоростной вариант кода (если грамотно использован), но его недостаток в том, что увеличивается размер кода. Для работы на ассемблере макросы позволяют упростить процесс написания программы, доведя его практически до уровня применения Си.

Добавлено: Сб фев 17, 2007 14:31:09
asd
а сколько мах псевдопараметров может иметь 1 макрос?
И что такое "Исключающее ИЛИ"

Добавлено: Сб фев 17, 2007 16:02:33
Abakt
asd писал(а):а сколько мах псевдопараметров может иметь 1 макрос?
Справка по ассемблеру для AVR на русском языке.
http://electronix.ru/forum/index.php?s= ... st&id=9434

10
asd писал(а):что такое "Исключающее ИЛИ"
логические операции
pid.by.ru/05.htm

Добавлено: Сб фев 17, 2007 16:16:31
ARV
asd писал(а):а сколько мах псевдопараметров может иметь 1 макрос?
И что такое "Исключающее ИЛИ"
Если мне не изменяет память, то теоретически количество псевдопараметров не ограничено, но смысла использовать больше десятка просто нет никакого. Вряд ли вы придумаете макрос, для которого потребуется много параметров, и даже если придумаете, это будет скорее демонстрация своей упертости, а не реальной необходтимости. Но лучше почитать в справочнике про конкретный компилятор ассемблера - разные производители могут вводить свобственные ограничения.
Исключающее ИЛИ - этот логическая функция, результат которой равен 1 только в том случае, если все ее входные параметры НЕ ОДИНАКОВЫ. Для двух входных параметров верны следующие равенства:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0, где XOR - функция исключающего или.
Иногда эту функцию называют "сложение по модулю 2"

Добавлено: Сб фев 17, 2007 17:33:12
moLCHec
ДА спасибо ARV я уже потом догнал что функция вызывается а тут подставляется в Си это делается опретором #define например #define SetBit(x,y) x|=y. С точки зрения объёма лучше функцию вызвать а с точки зрения скорости пожалуй макрос. Вроде я всё правильно понял.