Я бы сказал, на любителя. Все зависет от возможностей выбора ассемблера и возможностей самого ассемблера. А все ассемблеры, даже для одного и того же процессора, могут сильно отличаться друг от друга и с точки зрения синтаксиса, и с точки зрения возможностей. Например, Вы работаете с плавающей арифметикой, Вам требуется определить некоторые константы с плавающей точкой, например:
Pi: .flt2 3.1415926 ; Число Пи
Можете Вы это сделать в AVRASM? Наверняка нет. Нет у него такой возможности, впрочем, как и в IAR тоже. Но если задаться такой целью, то можно сделать ассеблер, который поддерживает данные с плавающей точкой:
MacroCrossassembler (Zilog-80), 01-Mar-06 Wednesday 16:14 Page 1.
.MAIN.
0000 3e ff 1 ld a, -1
2 .irpc dst, bcdehl
3 ld dst, a
4 .endr
0002 47 4 ld b, a
0003 4f 4 ld c, a
0004 57 4 ld d, a
0005 5f 4 ld e, a
0006 67 4 ld h, a
0007 6f 4 ld l, a
5
6 .psect $$CONST ; Switch to constant program section
7
0000 8 Pi:: ; The Pi number
0000 82 49 0f da 9 .flt2 3.1415926
10
11 .psect $$STRNG ; Here the program section for strings
12
0000 13 Hello: ; Hello message
0000 48 65 6c 6c 6f 77 14 .asciz /Hellow from Africa/
20 66 72 6f 6d 20
41 66 72 69 63 61
00
15
0013 16 .end
Обратите внимание также на директиву .irpc Мы такую директиву повторения сделали, есть она и в IAR. А вот есть ли она в AVRASM?
Корче говоря, кто-то предпочитает удобства под боком, а кто-то довольствуется теми, что во дворе.