![]() |
Главная Микроконтроллеры [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [ 34 ] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] Опция Wrap relative jumps - разрешить относительную адресацию переходов. Эта опция полезна для использования с микроконтроллерами, имеющими 4 К слов памяти программ. Опция Save before assemble - сохранять исходный текст программы каждый раз перед ее ассемблированием. > Версия ассемблера для командной строки Одновременно с установкой транслятора ассемблера для Windows, устанавливается версия для работы из командной строки MS-DOS. Эта версия транслятора не имеет никаких ограничений по объему транслируемой программы (т. е., в отличие от версии для Windows, размер файла может быть больше 28 кбайтов). Вызывается программа следующим образом: avrasm [-m -i -g] input.asm output.1st output.hex В результате выполнения программы будет прочитан файл in-put.asm, сгенерирован файл листинга listfile.lst, файл скомпилированного кода для загрузки в память программ микроконтроллера output.hex и объектный файл *.obj, используемый отладчиком. Назначение ключей программы m - генерировать файл кода в формате Motorola S-Record; i - генерировать файл кода в формате Intel HEX; g - генерировать файл кода в формате Generic. По умолчанию генерируется файл кода в формате Generic. Для выбора типа файла следует уточнить, с каким типом файлов может работать программатор, которым программа будет заноситься в микроконтроллер. Формат файлов, генерируемых транслятором ассемблера Формат Generic Рассматриваемый транслятор ассемблера может генерировать три различных типа файлов: Generic, Motorola S-Records и Intel HEX. Рассмотрим один из этих форматов - Generic. Файлы этого формата - текстовые. Структура файла очень проста. Каждая строка файла имеет вид: Адрес: код операции. Здесь «Адрес» - 6 цифр (24 бита) шестнадцатеричного числа, и «код операции» - 4 цифры (16 битов) шестнадцатеричного числа. «Адрес» о1феделяет адрес в памяти программ, а «код операции» - содержимое памяти по указанному адресу. В качестве примера рассмотрим программу на ассемблере: ; Демонстрация фермата Generic mov rO,r1 inc r1 call oursub .org 0x50 ; Установить адрес в памяти программ на 0x50 oursub: add r1,г2 ret В результате трансляции этой программы будет получен файл gen demo.rom следующего содержания: 000000:2с01 000001:9413 000002:940е 000003:0050 000050:0с12 000051:9508 Обратите внимание на то, что команды, состоящие из двух слов, размещаются в двух строках файла. Если в программе был определен сегмент EEPROM, то генерируется файл для прошивки в EEPROM. Расширение этого файла еер. Этот файл всегда генерируется в формате Generic. Формат объектного файла Объектный файл содержит отладочную информацию и может быть использован отладчиком для проверки правильности работы программы. Объектный файл имеет две части: record и trailer. Заголовочная часть имеет следующий формат: • смещение к исходным именам файлов (4 байта); • смещение к объектным записям (4 байта); • число байтов в каждой записи (1 байт); • число имен файлов во второй части файла (1 байт); • строку А VR Object File\0 (\0 означает, что строка завершена 0). Длительность записей составляет 9 байтов каждая. Формат записи: • адрес памяти программ (3 байта); • код операции (2 байта); • номер инструю1ии в исходном файле (1 байт, счет начинается с 0); • номер строки в исходном файле (2 байта, счет начинается с 1); • индикатор макроса (1 байт, 1 - если макрос, иначе - 0). И наконец, trailer часть имеет следующий формат: • имена файлов (заканчивающиеся на О, число файлов в заголовке); • ASCII 0. Для примера рассмотрим программу (файл objdemo.asm): ; Демонстрация объектного формата .equ const1=0x15 .equ const2=0x40 , . . < macro SWIN swap @0 inc @0 .endmacro start: Idi r16.const1 SWIN r16 Idi r16.const2 SWIN r16 rjmp start .include "delay.asm" ; Включение другого файла на ассемблере Включаемый файл (delay.asm): delay: dec г16 breq delay ret После трансляции будет получен объектный файл. Файл - бинарный. Для удобства рассмотрения он был переведен в 16-ричный формат, а столбцы были раздвинуты. Смещение 00000000 00000004 00000008 00000009 ОООООООА 0000001А 00000023 Содержимое файла (в 16-ричном формате): 00000074 Смещение к именам файлов 0000001А 415652204F626A6563742046696C6500 Строка AOF 000000Е10500000В00 Первая запись 000001950200000С01 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [ 34 ] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] 0.001 |