КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Формат файла листингаЛистинг ассемблера содержит информацию о процессе ассемблирования и состоит из нескольких секций: Заголовок страницы Каждая страница листинга начинается с заголовка, содержащего имя программы, имя проекта, число и время трансляции и номер страницы, например:
A51 MACRO ASSEMBLER LAB1 05/05/2008 20:59:18 PAGE 1
Далее следуют строки с номером версии программы-транслятора и именем выходного объектного файла. В следующей строке приводится содержимое командной строки, с помощью которой вызывается транслятор:
MACRO ASSEMBLER A51 V8.00b OBJECT MODULE PLACED IN lab1.OBJ ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE lab1.a51 SET(SMALL) DEBUG EP
Исходный текст с кодами команд Исходный текст выводится в листинге в четыре столбца. Столбец LOC содержит адрес ПЗУ, по которому размещается код команды. Для директивы Ассемблера EQU в этом столбце выводится значение, присваиваемое соответствующему имени. В столбце OBJ выводятся коды команд. В столбце LINE указаны номера строк исходного текста. Далее в столбце SOURCE выводится исходный текст программы.
LOC OBJ LINE SOURCE 1 ; Задание имен констант 0030 2 Addr equ 30H ; Начальный адрес ОЗУ 0010 3 Lng equ 16 ; Количество данных 00BC 4 Const equ 0BCh ; Константа заполнения 0000 7830 7 mov R0,#Addr ;Загрузка адреса в регистр R0 0002 74BC 8 mov A,#Const ; Загрузка констанды в регистр ; - аккумулятор 0004 7A10 9 mov R2,#Lng ; Загрузка длины в регистр R2 0006 10 loop: ; Метка начала цикла 0006 F6 11 mov @R0,A ; Запись аккумулятора в ОЗУ по ; адресу регистра R0 0007 08 12 inc R0 ; Увеличение адреса на единицу 0008 DAFC 13 djnz R2,loop ; Уменьшить счетчик на 1, ; сравнить с нулем и перейти в начало цикла, если не нуль
Исключить исходный текст из листинга можно директивой $NOLIST.
Таблица символических имен Таблица символических имен содержит информацию о типе, значении и других атрибутах определенных в программе имен:
N A M E TYPE VALUE ATTRIBUTES ADDR N NUMB 0030H A CONST N NUMB 00BCH A LNG N NUMB 0010H A LOOP C ADDR 0006H A Отменить генерирование таблицы имен можно директивой $NOSYMBOLS.
Тип имени определяется следующими буквами: B - символ ссылается на память типа BIT. C - символ ссылается на память типа CODE. D - символ ссылается на память типа DATA. I - символ ссылается на память типа IDATA. N - символ – имя числа. X - символ ссылается на память типа XDATA. Дополнительно тип имени определяется словами: ADDR - символ типа адрес. NUMB - символ типа число. SEG - символ – имя сегмента. Число, следующее после определения типа, - это адрес имени в памяти (для адресов) или размер (для сегментов). Следующий после адреса символ A означает, что адрес абсолютный и неперемещаемый. Символ R – признак перемещаемого адреса.
Перекрестные ссылки Директива $XREF включает информацию о перекрестных ссылках в таблицу символов:
XREF SYMBOL TABLE LISTING ---- ------ ----- ------- NAME TYPE VALUE ATTRIBUTES / REFERENCES ADDR . . . . N NUMB 0030H A 3# 8 CONST. . . . .N NUMB 00BCH A 5# 9 LNG. . . . . .N NUMB 0010H A 4# 10 LOOP . . . . .C ADDR 0006H A 11# 14 В столбце REFERENCES выводится список строк, в которых содержатся ссылки на соответствующие имена. Номера с символом '#’ - строки, в которых имена определяются.
Банки регистров В этой строке перечисляются банки регистров, используемые программой. По умолчанию указывается только нулевой банк регистров. Используемые банки регистров определяются директивой $REGISTERBANK.Эта информация используется компоновщиком при подключении библиотечных объектных модулей:
REGISTER BANK(S) USED: 0 1
Предупреждения и ошибки Проблемы, встречающиеся во время трансляции, генерируют сообщения об ошибках и предупреждениях. Эти сообщения выводятся на экран монитора и в листинг:
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
|