Файл листинга полезно использовать, когда вы хотите точно видеть, что генерирует Турбо Ассемблер при ассемблировании каждой инструкции или директивы. Основу этого файла составляет исходный файл, в который включен большой объем сопровождающей информации о результатах ассемблирования. Турбо Ассемблер выводит для каждой инструкции полученный машинный код, а также смещение в текущем сегменте (на каждой строке с машинным кодом). Кроме того, Турбо Ассемблер выводит в таблицах информацию о метках и сегментах, используемых в программе, включая значение и тип каждой метки и атрибуты каждого сегмента.
Примечание: См. здесь описание параметров командной строки /l и /la.
Турбо Ассемблер может также по запросу генерировать таблицу перекрестных ссылок для всех меток, используемых в исходном файле, в которой показано, где определяется каждая метка, и где на нее имеется ссылка.
Примечание: См. в здесь описание параметра командной строки /c.
Формат листинга
В верхней части каждой страницы листинга выводится заголовок, содержащий версию Турбо Ассемблера, с помощью которой выполнено ассемблирование файла, дату и время ассемблирования и номер страницы в листинге.
Файл листинга содержит две части: аннотированный листинг исходного кода и таблицу идентификаторов. Сначала выводится исходный ассемблируемый код с заголовком, содержащим имя файла, в котором находится исходный код. Вывод исходного кода Ассемблера сопровождается информацией о машинном коде, который ассемблирует Турбо Ассемблер. Все ошибки или предупреждения, обнаруженные в процессе ассемблирования, включаются в листинг непосредственно за содержащей ошибку строкой.
Строки кода в файле листинга имеет следующий формат:
<глубина> <номер_строки> <смещение> <машинный_код> <исходный_код>
где <глубина> показывает уровень вложенности включаемых файлов или макрокоманд в файле листинга.
Поле <номер_строки> содержит номер строки в файле листинга (не включая заголовки). Номера строк особенно полезны при использовании перекрестных ссылок Турбо Ассемблера, в которых указываются номер строк. Учтите, что поле <номер_строки> не соответствует номерам строк исходного модуля. Например, если в файл включается другой файл или выполняется макрорасширение, то значение поля <номер_строки> продолжает увеличиваться, хотя текущая строка в исходном файле остается той же. Чтобы преобразовать номер строки обратно в строку исходного кода, вы должны найти строку в файле листинга, и найти такую же строку в исходном коде (поее внешнему виду, а не по номеру).
Поле <смещение> представляет смещение в текущем сегменте начала машинного кода, сгенерированного из соответствующей исходной строки Турбо Ассемблером.
Поле <машинный_код> показывает фактическую последовательность шестнадцатиричных значений размером в байт или слово, которые ассемблированы из соответствующей исходной строки на Ассемблере.
Поле <исходный_код> - это просто исходная строка Ассемблера, с комментариями и всем, что в ней содержится. Некоторые исходные строки (например те, которые содержат только комментарии) не генерируют никакого машинного кода. Эти строки не содержат полей <смещение> и <машинный_код>, но имеют номер строки.
1 2 3 4
8 8 8
| |