230
pop dpl
pop b
pop acc
reti
С __naked код выглядит так:
_nakedInterrupt:
inc _counter
reti
5.2.12 Формат Intel HEX
Intel HEX – формат файла. Основным отличием этого формата от таких
монстров, как ELF и COFF является крайняя простота.
Формат позволяет
хранить только образ памяти. Ни о каком перемещаемом коде и возможности
хранения объектных файлов в этом формате речи не идет.
В настоящий момент этот формат в
основном используется при
программировании встроенных систем. Большинство компиляторов и линкеров
умеют выдавать загрузочный модуль в этом формате. Строки файла
представляют собой
текстовые записи, в
которых закодированы адреса
расположения, команды и данные в шестнадцатеричной системе счисления.
Изначально, HEX формат использовался для работы с перфоленточными
загрузчиками. В настоящее время HEX формат
используют для
программирования различных контроллеров и связи с программаторами ППЗУ.
Каждую строку в HEX файле называют записью. Она состоит из
следующих элементов:
• Двоеточие (:).
•
Число байтов данных, содержащихся в этой записи. Занимает один байт
(две шестнадцатеричных цифры), что соответствует 0…255 в
десятичной системе.
• Начальный адрес блока записываемых данных – 2 байта. Этот адрес
определяет абсолютное местоположение блока в EPROM.
•
Один байт, обозначающий тип записи.
o 0x00 – блок данных;
o 0x01 – конец файла;
o 0x02 – адрес сегмента (см. архитектуру процессора Intel x86);
o 0x03 – стартовый адрес сегмента (см. архитектуру процессора Intel
x86);
o 0x04 – старшая часть линейного (32-разрядного) адреса;
o 0x05 – стартовый адрес, старшая часть линейного (32-разрядного)
адреса.
• Байты данных (их число указывается в поле 2).
231
• Последний байт в записи является контрольной суммой.
Если сумма
всех байтов в строке (без учёта переноса) равняется 00, строка считана
правильно.
• Строка заканчивается стандартной парой CR/LF (0Dh 0Ah).
• Файл всегда завершается командой 01, (получается запись вида
«:00000001FF»).
Пример HEX-файла:
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
Недостатки формата:
• Ненадежный контрольный код (вероятность ошибки 1/256).
• Нет суммарного контрольного кода для всего файла.
• Получается большой
файл при HEX кодировании, что отрицательно
сказывается на скорости передачи файлов в контроллер.
Do'stlaringiz bilan baham: