Если почитать ответы, то на мой взгляд переплетаются две темы. Особенности ASM AVR. И ASM, как таковой.
Хочу высказаться по обоим, но давайте сначала определюсь. Так сказать "заужу" рамки. Дело в том, что AVR разрабатывался как МП использующийся для задач управления. Т.е. датчики, моторы, протоколы передачи разные, регуляторы, предварительная обработка сигнала и т.п. Это было конкретно описано на сайте и видно из примеров. Основные конкуренты - PIC, MSP430, Ubicom, 51(варианты в том числе Sygnal), mitsubishi, ну и некоторые др. менее распространённые.
Конечно мы хотели бы прибамбахать туда ОС MS Windows XP

, ну и брюзжим по тиху, типа что-то ресурсов маловато будет.
Но давайте исходить из первоначального назначения. Итак что мы видим:
1) Большое колличество регистров практически избавляет от использования памяти в задачах управления. (Нет равных)
2) Результат операции можно поместить в любой регистр. (сравнима msp430)
3) При любой ариф/лог операции выставляются флаги и их полный набор. (Сравнима msp430)
4) Легко организуются буфера, т.к. три указательные пары регистров и автоинкр/декр, косвенная индексн. и т.д. Прост доступ к таблицам данных во флэш. (Нет равных)
5) Очень малое время засыпания/просыпания и перехода по прерыванию. (Нет равных)
6) Хороший булевый процессор. (Сравнима 51)
7) Высокое быстродействие (Сравнима Sygnal, Ubicom)
8) Большая номенклатура, оснащение, наличие отлад. средств доступность.
9) Малая стоимость (Сравнима PIC)
Таким образом пинок на AVR, что мол инкремент ячейки памяти - три команды, - это пол правды. Допустим надо сложить r3:r4 и r5:r6.
На 51 выглядит так
mov a,r4
add a,r6
mov r4,a
mov a,r3
addc a,r5
mov r5,a
Для AVR
add r4,r6
adc r3,r5
Отсутствие аккумулятора - просто супер!!! Для создания библиотек и т.п.
Для любителей MSP430 отмечу, что 16 бит арифметика - это класно. В одном случае хотел перейти (уж оч. много 16-бит операций было) И что получилось, - там одно прерывание надо было обработать. Посмотреть один бит и выставить другой (в голове обработанный), так на 8-ми МГц я не сравлялся. Вот и 16-бит!
Для любителей PIC просто промолчу.

Как сказал мне один приятель - слишком много отладочных средств купили. Теперь сложно ....

К примеру я переводил одну прогу с 8051 на 90s8515. Переводил механически типа команда в команду. Выкинул аппаратную примочку (51-ая не справлялась) и в результате.
а) Длина проги уменьшилась на 10% (Это при том что команда AVR 2 байта).
б) На критическом участке быстродействие (в тактах) возросло на 30%. При большей работе.
А если её сразу написать ориентируясь на AVR, - результат был бы ещё более впечатляющий.
Теперь по второму вопросу. На мой взгляд выигрыш ASMа чисто виртуальный. Т.е. я выигрываю тем что более грамотно распределяю ресурсы. На тех задачах о которых я писал выше почти не требуется ячейки ОЗУ. Практически все данные влазят в регистры. Обычно использую две рабочих пары, Z и регистр FLAG(для битов). Самые часто используемые - в регистрах. В озу - самые редко используемые.
Приведу пример статистики для средней "классической" моей проги.
Длина: ------------------------- 5429 строк. (~6k занято)
память: рабочие ячейки ----- 31 байт
------- внешние ячейки ----- 25 байт
------- стеки RS232 -------- всё остальное (- стек проги)
Использование Ld/st -------- 200 раз (в основном константы времени)
Использование Push/pop ----- 2 раз в голове
уровень стека в прерывании - 8 максимальный
уровень стека в п/п -------- 6 максимальный
Очевидно, что СИ (Например IAR) Отводит две регистровых пары под указатели стека данных (-4регистра). Ну и уровень стека раза в три-четыре больше.
Что я вижу при обращении к static памяти типа:
NumbActiveKom++; // Ввод команды завершён
В голове
LDD R16, Z+53
DEC R16
STD Z+53, R16
в прерывании
rcall ?Subroutine96
где
?Subroutine96:
MOVW R31:R30, R27:R26
LDD R16, Z+53
DEC R16
STD Z+53, R16
RET
И это при оптимизации по времени. Но при здравом анализе к компилятору нет претензий. Я чётко понимаю что требуется унификация для всех обращений. И смысл сгенерированного мне понятен.
Причина в том, что нет в СИ оператора который донесёт до компилятора общий смысл всей программы и смысл конкретной переменной. Да и не надо это. Прелесть Си и заключается в абстрагировании от конкретной реализации твоей идеи. Ну а уж если где-то надо быстродействие ... тогда берёшь логически законченный кусок программы и пишешь его с нуля на асме.
Но всё-таки мне кажется, что постепенно уровень компиляторов станет ещё выше, команды АСМа ещё заумнее, ресурсов и быстродействия у камней ещё больше, а АСМа - всё меньше.
На моей памяти редактор текста для Радио86РК влазил в 2К. 4К - Бэйсик, Паскаль. 720К - прародитель Heroes - KB. А теперь Герои на DVD едва-едва.

Короче скоро будем Windows Robotics вставлять и из под неё на визуал Си светодиодами моргать!
Всё сказанное - мой взгляд на вещи.