Расширения имени файла | Общего назначения:.hex , [1] .mcs , [2] .int , [3] .ihex , .ihe , .ihx [4] Платформо-специфические: .h80 , .h86 , [5] [6] .a43 , [7] [4] .a90 [7] [4] Разделенные, банковские или страничные: .hxl – .hxh , [8] .h00 – .h15 , .p00 – .pff [9] Двоичные или Intel hex: .obj , .obl , [8] .obh , [8] .rom ,.eep |
---|
Формат файла шестнадцатеричного объекта Intel , формат Intel hex или Intellec Hex — это формат файла , который передает двоичную информацию в текстовой форме ASCII , [10] что позволяет хранить ее на недвоичных носителях, таких как бумажная лента , перфокарты и т. д., для отображения на текстовых терминалах или печати на строчно-ориентированных принтерах . [11] Формат обычно используется для программирования микроконтроллеров , EPROM и других типов программируемых логических устройств и аппаратных эмуляторов . В типичном приложении компилятор или ассемблер преобразует исходный код программы ( например , на языке C или ассемблере ) в машинный код и выводит его в объектный или исполняемый файл в шестнадцатеричном (или двоичном) формате. В некоторых приложениях формат Intel hex также используется в качестве формата контейнера, содержащего пакеты потоковых данных . [12] Обычные расширения файлов, используемые для результирующих файлов, — .HEX [1] или .H86. [5] [6] Затем HEX-файл считывается программистом для записи машинного кода в PROM или передается в целевую систему для загрузки и выполнения. [11] [13] Существуют различные инструменты для преобразования файлов из шестнадцатеричного формата в двоичный (например, HEX2BIN ) и наоборот (например, OBJHEX, OH, OHX, BIN2HEX).
Формат Intel hex был первоначально разработан для Intel 's Intellec Microcomputer Development Systems [14] : 10–11 (MDS) в 1973 году для загрузки и выполнения программ с бумажной ленты . Он также использовался для указания содержимого памяти для Intel для производства ПЗУ , [15] которое ранее приходилось кодировать в гораздо менее эффективном формате BNPF (Begin-Negative-Positive-Finish). [14] : 11 В 1973 году «программная группа» Intel состояла только из Билла Байерли и Кеннета Бергетта, а также Гэри Килдалла в качестве внешнего консультанта, работавшего под названием Microcomputer Applications Associates (MAA) и основавшего Digital Research в 1974 году. [16] [17] [18] [9] Начиная с 1975 года формат использовался системами Intellec Series II ISIS-II , поддерживающими дисководы, с файлами, использующими расширение HEX. [19] Многие устройства программирования PROM и EPROM поддерживают этот формат.
Intel HEX состоит из строк текста ASCII , которые разделены символами перевода строки или возврата каретки или обоими. Каждая текстовая строка содержит заглавные шестнадцатеричные символы, которые кодируют несколько двоичных чисел. Двоичные числа могут представлять данные, адреса памяти или другие значения в зависимости от их положения в строке, а также типа и длины строки. Каждая текстовая строка называется записью .
Запись (строка текста) состоит из шести полей ( частей), которые располагаются в порядке слева направо: [11]
Для наглядности поля записей Intel HEX в этой статье окрашены следующим образом:
Начальный код Количество байтов Адрес Тип записи Данные Контрольная сумма
Байт контрольной суммы записи — это дополнение до двух младшего байта (LSB) суммы всех декодированных значений байтов в записи, предшествующей контрольной сумме. Он вычисляется путем суммирования декодированных значений байтов и извлечения LSB суммы (т. е. контрольной суммы данных), а затем вычисления дополнения до двух LSB (например, путем инвертирования его битов и добавления единицы).
Например, в случае записи : 03 0030 00 02337A 1E сумма декодированных значений байтов равна 03+00+30+00+02+33+7А= E2
, который имеет значение LSB E2
. Дополнение до двух E2
равно1E — байт контрольной суммы, появляющийся в конце записи.
Достоверность записи можно проверить, вычислив ее контрольную сумму и убедившись, что вычисленная контрольная сумма равна контрольной сумме, указанной в записи; если контрольные суммы различаются, возникает ошибка. Поскольку байт контрольной суммы записи является дополнением до двух — и, следовательно, аддитивной инверсией — контрольной суммы данных, этот процесс можно свести к суммированию всех декодированных значений байтов, включая контрольную сумму записи, и проверке того, что младший бит суммы равен нулю. При применении к предыдущему примеру этот метод дает следующий результат: 03+00+30+00+02+33+7А+1E = 100
, который имеет значение LSB 00
.
Записи Intel HEX обычно разделяются одним или несколькими символами завершения строки ASCII, так что каждая запись отображается отдельно в текстовой строке. Это повышает читаемость, визуально разделяя записи, а также обеспечивает заполнение между записями, что может быть использовано для повышения эффективности машинного анализа . Однако символы завершения строки являются необязательными, поскольку ' : ' используется для обнаружения начала записи. [15] [5] [24] [20] [21] [22] [23]
Программы, создающие записи HEX, обычно используют символы завершения строки, соответствующие соглашениям их операционных систем . Например, программы Linux используют один символ LF ( перевод строки , шестнадцатеричное значение 0A
) для завершения строк, тогда как программы Windows используют CR ( возврат каретки , шестнадцатеричное значение 0D
), за которым следует LF.
Intel HEX имеет шесть стандартных типов записей: [11]
Шестнадцатеричный код | Тип записи | Описание | Пример |
---|---|---|---|
00 | Данные | Количество байт указывает количество байтов данных в записи. В примере 0B(одиннадцать) байтов данных. 16-битный начальный адрес для данных (в примере адреса начинаются с0010) и данные (61,64,64,72,65,73,73,20,67,61,70). | : 0B 0010 00 6164647265737320676170 A7 |
01 | Конец файла | Должен встречаться ровно один раз в файле в последней записи файла. Количество байтов равно 00, поле адреса обычно0000и поле данных опущено. | : 00 0000 01ФФ |
02 | Расширенный адрес сегмента | Количество байтов всегда равно 02., поле адреса (обычно0000) игнорируется, а поле данных содержит 16-битный базовый адрес сегмента. Он умножается на 16 и добавляется к каждому последующему адресу записи данных для формирования начального адреса для данных. Это позволяет адресовать до одного мебибайта (1048576 байт) адресного пространства. | : 02 0000 02 1200 ЭА |
03 | Адрес начального сегмента | Для процессоров 80x86 указывает начальный адрес выполнения. Количество байтов всегда равно 04, поле адреса -0000и первые два байта данных — это значение CS , последние два — это значение IP . Выполнение должно начаться с этого адреса. | : 04 0000 03 00003800 С1 |
04 | Расширенный линейный адрес | Позволяет использовать 32-битную адресацию (до 4 ГиБ ). Количество байтов всегда равно 02и поле адреса игнорируется (обычно0000). Два байта данных (big endian) определяют верхние 16 бит 32-битного абсолютного адреса для всех последующих типов.00записи; эти верхние биты адреса применяются до следующего04запись. Абсолютный адрес для типа00запись формируется путем объединения верхних 16 бит адреса самого последнего04запись с младшими 16 битами адреса00запись. Если тип00запись не предшествует ни одному типу04записи, то его старшие 16 бит адреса по умолчанию равны 0000. | : 02 0000 04 0800 F2 |
05 | Начальный линейный адрес | Количество байтов всегда равно 04., поле адреса -0000. Четыре байта данных представляют собой 32-битное значение адреса (big endian). В случае процессоров, которые его поддерживают, этот 32-битный адрес является адресом, с которого должно начаться выполнение. | : 04 0000 05 000000CD 2A |
Для вариантов использовались и другие типы записей, в том числе06('мигающие' сообщения / контейнер протокола передачи) Уэйна и Лейна, [34] 0А(начало блока),0Б(конец блока),0С(дополненные данные),0D(пользовательские данные) и0Э(другие данные) BBC / Micro:bit Educational Foundation , [35] и81(данные в сегменте кода ),82(данные в сегменте данных ),83(данные в сегменте стека ),84(данные в дополнительном сегменте ),85( адрес абзаца для абсолютного сегмента кода),86(адрес абзаца для абсолютного сегмента данных),87(адрес абзаца для абсолютного сегмента стека) и88(адрес абзаца для абсолютного дополнительного сегмента) от Digital Research . [6] [20]
Оригинальный формат 4-битной/8-битной бумажной ленты Intellec Hex и формат компьютерной перфокарты Intellec Hex в 1973/1974 годах поддерживали только один тип записи00. [36] [37] [25] Это было расширено около 1975 года [ когда? ] для поддержки также типа записи01. [15] Иногда называемый символическим шестнадцатеричным форматом , [38] он может включать необязательный заголовок, содержащий таблицу символов для символической отладки , [25] [28] [26] [9] все символы в записи, предшествующие двоеточию, игнорируются. [15] [5]
Около 1978 года [ когда? ] компания Intel представила новые типы записей02и03( чтобы добавить поддержку сегментированного адресного пространства новых на тот момент процессоров 8086/8088 ) в их расширенном шестнадцатеричном формате Intellec . [ когда? ]
Иногда используются специальные названия для обозначения форматов файлов HEX, которые используют определенные подмножества типов записей. Например:
В этом примере показан файл, содержащий четыре записи данных, за которыми следует запись конца файла:
: 10 0100 00 214601360121470136007EFE09D21901 40 : 10 0110 00 2146017E17C20001FF5F160021480119 28 : 10 0120 00 194E792346239 65778239EDA3F01B2CA A7 : 10 0130 00 3F0156702B5E712B722B732146013421 C7 : 00 0000 01ФФ
Начальный код Количество байтов Адрес Тип записи Данные Контрольная сумма
Помимо собственного расширения Intel, несколько сторонних компаний также определили варианты и расширения шестнадцатеричного формата Intel, включая Digital Research (как в так называемом «шестнадцатеричном формате Digital Research» [6] [20] ), Zilog , Mostek , [29] [30] TDL , [30] [31] Texas Instruments , Microchip , [39] [40] c't , Wayne and Layne [34] и BBC / Micro:bit Educational Foundation (с его «универсальным шестнадцатеричным форматом» [35] ). Они могут содержать информацию о точках входа программы и содержимом регистра , измененный порядок байтов в полях данных, значения заполнения для неиспользуемых областей, биты предохранителей и другие различия.
Формат шестнадцатеричного кода Digital Research для процессоров 8086 поддерживает сегментную информацию, добавляя типы записей для различения кода, данных, стека и дополнительных сегментов. [5] [6] [20]
Большинство ассемблеров для CP/M-80 (а также XASM09 для Motorola 6809 ) не используют тип записи 01h для обозначения конца файла, а вместо этого используют запись типа данных нулевой длины 00h. [41] [1] Это упрощает объединение нескольких шестнадцатеричных файлов. [42] [43] [1]
Texas Instruments определяет вариант, в котором адреса основаны на битовой ширине регистров процессора, а не на байтах.
Компания Microchip определяет варианты INTHX8S [44] (INHX8L, [1] INHX8H [1] ), INHX8M, [44] [1] [45] INHX16 [44] (INHX16M [1] ) и INHX32 [46] для своих микроконтроллеров PIC .
Известно также , что кросс-макроассемблер AS Альфреда Арнольда [1] , эмулятор 8051 Вернера Хеннига-Ролеффа SIM51 [26] и кросс-конвертер BINTEL Маттиаса Р. Пола [47] определяют расширения шестнадцатеричного формата Intel.
Эта статья содержит слишком много или слишком длинные цитаты . ( Октябрь 2023 ) |
[…] Для микроконтроллеров PIC переключатель -m <0..3> позволяет генерировать три различных варианта формата Intel Hex. Формат 0 - это INHX8M, который содержит все байты в порядке Lo-Hi-Order. Адреса становятся вдвое больше, поскольку PIC имеют адресное пространство, ориентированное на слова, которое увеличивает адреса только на один за слово. […] В формате 1 (INHX16M) байты хранятся в их естественном порядке. Это формат, который Microchip использует для своих собственных программных устройств. Формат 2 (INHX8L) и 3 (INHX8H) разделяет слова на нижние и верхние байты. […] К сожалению, в литературе можно найти разные утверждения о последней строке файла Intel-Hex. Поэтому P2HEX знает три разных варианта, которые можно выбрать […] :00000001FF […] :00000001 […] :0000000000 […] По умолчанию используется вариант 0, который, по-видимому, является наиболее распространенным. […] Если имя целевого файла не имеет расширения, предполагается расширение HEX. […]
Программисту TI-gang нужны форматы файлов .int, .hex, .a43.
По умолчанию этот режим включен для файлов с расширением .a90, .hex, .a43 или .ihx.
[…] Следующие данные выводятся только из ASM-86: 81 то же, что и 00, данные принадлежат
сегменту кода
[…] 82 то же, что и 00, данные принадлежат
сегменту данных
[…] 83 то же, что и 00, данные принадлежат
сегменту стека
[…] 84 то же, что и 00, данные принадлежат
дополнительному сегменту
[…] 85
адрес абзаца
для абсолютного сегмента кода […] 86 адрес абзаца для абсолютного сегмента данных […] 87 адрес абзаца для абсолютного сегмента стека […] 88 адрес абзаца для абсолютного дополнительного сегмента […] Все символы, предшествующие двоеточию для каждой записи, игнорируются. […]
(17 страниц)
[…] Формат
Intel
идентичен формату, определенному Intel для
8086.
Формат
Digital Research
почти идентичен формату Intel, но добавляет информацию о сегменте к шестнадцатеричным записям. Вывод любого формата может быть введен в
GENCMD
, но формат Digital Research автоматически обеспечивает идентификацию сегмента. Сегмент - это наименьшая единица программы, которая может быть перемещена. […] В определении типов записей 00 и 02 шестнадцатеричный формат Digital Research отличается от формата Intel. Intel определяет по одному значению для типа записи данных и типа адреса сегмента. Digital Research идентифицирует каждую запись с сегментом, который ее содержит. […] 00H для данных, принадлежащих всем сегментам 8086 […] 81H для данных, принадлежащих сегменту
CODE
[…] 82H для данных, принадлежащих
сегменту DATA
[…] 83H для данных, принадлежащих
сегменту STACK
[…] 84H для данных, принадлежащих
сегменту EXTRA
[…] 02H для всех записей адресов сегментов […] 85H для абсолютного адреса сегмента CODE […] 86H для адреса сегмента DATA […] 87H для адреса сегмента STACK […] 88H для адреса сегмента EXTRA […]
[1] (1+viii+122+2 страницы)
[…] Формат файла
Intel
HEX может содержать гораздо больше, чем "байты данных". Если строки не начинаются с двоеточия (":"), они могут содержать все, что угодно. […] Однажды я видел большой файл HEX […] В начале он содержал исходный код программы
PL/M
, а в конце — полученный файл HEX, созданный компилятором PL/M. […] Я нашел еще один файл HEX, содержащий несколько строк комментариев, не в начале и не в конце, а разделяющих несколько строк "абсолютных записей". […] он был из "(Intel)
8008
Simulator". Итак, в начале его использования было хорошо известно, что файлы HEX могут содержать пояснения. […] в
CP/M
или любой 8-битной системе 64K остается один случай: «Адреса страниц». Начиная с CP/M, стандартно отображать адреса памяти с использованием шестнадцатеричной системы […] как мы уже говорили для файлов BIN/COM, адреса памяти — 0000/0100. […] эти адреса памяти можно записать как 00-00/01-00 […], чтобы сказать: Страница ноль, адрес ноль / Страница один, адрес ноль. […] наивысший адрес памяти в 8-битном компьютере 64K — FFFF […] Страница FF, адрес FF […] самые низкие адреса находятся на странице ноль (или 00), а самые высокие адреса находятся на странице FF. […] Типы файлов CP/M имеют длину в 3 буквы, можно использовать типы файлов в форме P00–PFF […], чтобы указать, по какому адресу памяти загрузить файл HEX. […] Я заметил, что большинство моих адресов заканчиваются на «00», поэтому адрес загрузки можно сократить до адреса страницы, который […] можно поместить в тип файла […]
[…]
Intel Intellec 8
[…] впервые появился где-то в 1972 или 1973 году, за два года или больше до
Altair 8800, который
в стандартных исторических источниках часто называют «первым микрокомпьютером». […]
Intel
утверждает, что 8 Mod 8 был впервые произведен в 1973 году и снят с производства в 1975 году. У Тони Дуэлла есть плата ЦП 8 Mod 80, датированная 1972 годом, а 8 Mod 8 и 4 Mod 40 обе указаны в каталоге Intel Data Catalog, опубликованном в феврале 1976 года, поэтому фактический период производства мог быть несколько дольше. (Необходимо внимательно читать соответствующие документы Intel, поскольку названия MCS4, MCS40, MCS8 и MCS80 использовались практически без разбора для обозначения чипсетов, компьютеров или полных систем.) […]
(52 страницы) (Примечание. В этой статье не упоминается Intel Hex, но конкретно упоминается, что система Intel Intellec была официально представлена в 1973 году, но существуют некоторые устройства, датированные 1972 годом.)
[…] В формате Intel Intellec Hex поле данных может содержать как 8-, так и 4-битные данные. Для представления как 8-, так и 4-битных данных необходимо использовать два шестнадцатеричных символа ASCII. В случае 4-битных данных только один из символов имеет значение и должен быть указан в форме заказа Intel PROM/ROM. […] Перед первым полем данных и после последнего поля данных должна быть длина заголовка/концевика не менее 25 нулевых символов. Комментарии (за исключением двоеточия) могут быть размещены на
заголовке ленты
. […] Если данные 4-битные, то либо старшая, либо младшая цифра представляет данные, а другая цифра пары может быть любой шестнадцатеричной цифрой ASCII. […]
[9][10] (468 страниц) (Примечание. В этом руководстве также описываются « Формат бумажной ленты BPNF », «Формат шестнадцатеричной бумажной ленты Non-Intellec» и «Формат компьютерной перфокарты PN».)
[…] Программы были написаны и протестированы группой разработчиков программного обеспечения Intel, состоящей из меня и двух других людей, и мы были готовы к реальной машине. […]
[…] Следующие данные выводятся только из ASM-86: 81 то же, что и 00, данные принадлежат
сегменту кода
[…] 82 то же, что и 00, данные принадлежат
сегменту данных
[…] 83 то же, что и 00, данные принадлежат
сегменту стека
[…] 84 то же, что и 00, данные принадлежат
дополнительному сегменту
[…] *85
адрес абзаца
для абсолютного сегмента кода […] *86 адрес абзаца для абсолютного сегмента данных […] *87 адрес абзаца для абсолютного сегмента стека […] *88 адрес абзаца для абсолютного дополнительного сегмента […] * 85, 86, 87 и 88 являются расширениями цифровых исследований. […] Все символы, предшествующие двоеточию для каждой записи, игнорируются. […]
(346 страниц) (Примечание. В этом руководстве только типы 85, 86, 87 и 88 обозначены как расширения Digital Research, как будто типы 81, 82, 83, 84 таковыми не являются.)
[…] Ввод […] Это пространство можно использовать для перевода строки, возврата каретки или комментариев. […] Вывод […] 2) Каждая строка заканчивается непечатаемым переводом строки, возвратом каретки и нулями. […](1+ii+19 страниц)
[…] Непечатаемый возврат каретки, перевод строки и нули, определяемые количеством нулей […](56 страниц)
[…] (g) Как правило, добавляется управляющий код (например, CR и LF). Данные в этом поле пропускаются до тех пор, пока не появится начальный символ ":" (a). Поскольку поля (a), (b), (c), (d) и (f) всегда существуют, минимальная длина записи составляет 11 байт, а максимальная — 521 байт. […](4+x+350 страниц)
[…]
PIP
выполняет специальную функцию, если местом назначения является дисковый файл с типом "HEX" ( файл машинного кода
Intel
в шестнадцатеричном формате), а источником является внешнее периферийное устройство, например устройство
чтения бумажной ленты
. В этом случае программа PIP проверяет, содержит ли исходный файл правильно сформированный шестнадцатеричный файл с допустимыми шестнадцатеричными значениями и записями контрольной суммы. При обнаружении недопустимой входной записи PIP выводит сообщение об ошибке на
консоль
и ждет корректирующих действий. Обычно достаточно открыть устройство чтения и повторно запустить раздел ленты (оттянуть ленту примерно на 20 дюймов). Когда лента готова к перечитыванию,
на консоли набирается
один
возврат каретки
, и PIP попытается выполнить еще одно чтение. Если позиция ленты не может быть правильно прочитана, пользователь продолжает чтение (набирая возврат после сообщения об ошибке) и вводит запись вручную с помощью программы ED после создания файла на диске. Для удобства PIP позволяет вводить
конец файла с консоли, если исходный файл является устройством
RDR:.
В этом случае программа PIP считывает устройство и отслеживает клавиатуру. Если на клавиатуре набирается
ctl-Z
, операция чтения завершается нормально. […]
[…] Отправьте 40
нулей
на устройство
перфорации
; скопируйте файл X.ASM на перфоратор, за которым следует конец файла (ctl-Z) и еще 40 нулей. […]
[…] Передача данных HEX: все данные проверяются на соответствие формату файла Intel Hex. Необязательные символы между записями Hex удаляются во время операции копирования. Консоль будет запрошена для корректирующих действий в случае возникновения ошибок. […]
[…] Игнорировать записи «:00» при передаче файла формата Intel hex (параметр I автоматически устанавливает параметр H). […]
[…] Сначала скопировать X.HEX на устройство PUN: и игнорировать конечную запись «:00» в X.HEX; продолжить передачу данных, прочитав Y.ZOT, который содержит записи HEX, включая любые содержащиеся в нем записи «:00». […]
[13] (6+250 страниц)PIP PUN:=NUL:,X.ASM,EOF:,NUL:
H
I
PIP PUN:=X.HEX[i],Y.ZOT[h]
1 CARRY 05714
2 ZERO 05715
3 SIGN 05716
4 PARITY 05717
5 MEMORY 06000
23 SQUAREROOT 04003
[…]
83 MONITORUSES 05766
$
****************************************
:1008000044520A2E0B36D0F930FA31CF30D730F9B6
[…]
:100AF0000936F4C730D70401C8C20C0031F930F808
:040B0000445E0AFF46
****************************************
:0000000000
$
(1+i+100+1+11+1 страниц) (Примечание. Показывает пример, содержащий разделители на основе звездочек и заголовок с отступом в виде пробела с именами символов, которые должны обрабатываться командой Intel ISIS HEXOBJ , а также INTERP/8 или INTERP/80 для символьной отладки . Этот необязательный заголовок не документирован как часть форматов Intel hex или BNPF, но содержится в руководствах по программированию Intel PL/M и ассемблера, создающих такие таблицы символов.)[…] Beim Absolut-Hex Konvertierprogramm von
Keil
können опционально […] Символьная информация в шестнадцатеричном файле aufgenommen werden. Символьная информация всегда находится в Anfang des Files, vor dem ersten ':'. Информация о символе не содержит никаких указаний, а также не может быть использована при изменении имени модуля, CODE, XDATA, DATA, IDATA, BIT, NUMBER. Для использования символов ASCII-Zeichen verwendet. Pro Zeile ist 1 Символ angeschrieben und zwar в форме: «0 SymbolName Wert» […]
[14][15] (Примечание. Это старая версия SIM51, программное обеспечение и документация поддерживались до 1996 года.)
[…] Информация об отладке найдена в Intel с помощью "$" и. Данн камен дер Имя символов и адрес. Комментарий может быть изменен как ";". […] ASM48 для
ISIS-2
производит несколько Hexfiles, […] ASM86 также. […]
[…] Код отформатирован в шестнадцатеричных байтах данных. Файл содержит ASCII-представление шестнадцатеричных байтов данных. Сам объектный код предваряется таблицей символов. Эти две части могут быть загружены или сохранены вместе или по отдельности. Таблица символов представляет собой ряд записей, завершающихся знаком доллара. Каждая запись содержит три поля, разделенные одним или несколькими пробелами ASCII: […] числовое поле […] поле метки, содержащее ASCII-представление исходного программного символа […] поле адреса, содержащее шестнадцатеричный адрес, назначенный символу […] Таблица символов завершается записью, первым непустым символом которой является знак доллара. Код объекта […] следует за таблицей символов […] Каждая из этих записей или физических строк представляет собой шесть логических полей различной длины в символах или кадрах. […](90 страниц) (Примечание. Intel 2920 — цифровой сигнальный процессор, выпущенный в 1979 году.)
[…] Я […] Intel Hex с комментариями по загрузке и допустимости ошибок контрольной суммы при загрузке […](66 страниц)
…] Кадры 7,8: Тип записи […] Два символа ASCII. В настоящее время (1974) все записи имеют тип 0. Это поле зарезервировано для будущего расширения […][18]
[…] Поскольку формат файла Intel hex ориентирован на байты, а 16-разрядный ПК — нет, разделы памяти программ требуют специальной обработки. Каждое 24-разрядное слово программы расширяется до 32 бит путем вставки так называемого «фантомного байта». Каждый адрес памяти программ умножается на 2, чтобы получить адрес байта. Например, раздел, который находится по адресу 0x100 в памяти программ, будет представлен в файле hex как 0x200. Рассмотрим следующий исходный код на языке ассемблера: […] ; file test.s […] .section foo,code,address(0x100) […] .pword 0x112233 […] Будет создан файл […] со следующим содержимым: […] :020000040000fa […] :040200003322110096 […] :00000001FF […] запись данных (строка 2) имеет адрес загрузки 0200, тогда как в исходном коде указан адрес 0x100. […]t данные представлены в формате « little-endian », то есть наименее значимый байт отображается первым. Фантомный байт отображается последним, непосредственно перед контрольной суммой. […](277 страниц)
[…] Den Vorspann beschließt ein Byte, dessen Wert den Typ des Blockes Angibt: 0 = Datenblock, 1 = Endblock. Если вы хотите, чтобы этот блок был установлен, вы можете использовать Endblock, а также прочный блокирующий блок, который не будет иметь значения. (Таким образом, ассемблер используется в
CP/M
, а также в XASM09; Typbyte не может быть погружен в Null). […]
[22] (Примечание. XASM09 — это ассемблер Motorola 6809. )
[…] Ассемблеры для PIC16C5X могут создавать объектные файлы PIC16C5X в различных форматах. Программист PIC16C5X должен уметь принимать и отправлять данные по крайней мере в одном из следующих форматов. Предпочтительным является 8-битный объединенный формат (INHX8M). […] формат […] INHX8S […] создает два 8-битных шестнадцатеричных файла. Один файл будет содержать пары адрес/данные для 8 бит высокого порядка, а другой файл будет содержать 8 бит низкого порядка. Расширения файлов для объектного кода будут «.obl» и «.obh» для файлов низкого и высокого порядка […] формат […] INHX8M […] создает один 8-битный шестнадцатеричный файл с комбинацией младшего байта/старшего байта. Поскольку каждый адрес может содержать только 8 бит в этом формате, все адреса будут удвоены. Расширения файлов для объектного кода будут «.obj» […] формат […] INHX16 […] создает один 16-битный шестнадцатеричный файл. Расширение файла для объектного кода будет «.obj». […][23][24]
Intel Hex Word Address Object Format […] Этот формат идентичен Intel Hex Object Format, за исключением того, что адрес для каждой строки объектного кода делится на два, таким образом преобразуясь в адрес слова (16-битное слово). Все остальные поля идентичны. Вот пример: […] :180800000102030405060708090A0B0C0D0E0F101112131415161718AC […] :02080C00191AA3 […] :00000001FF […](32 страницы)