|
Рассмотрим теперь работу ассемблера в
целом.Детали будут
обсуждены позднее, но сейчас нам нужно ввести новые термины и
ознакомиться с реальным результатом работы
ассемблера.
Ассемблер берет программу, написанную на
языке ассемблера, и
превращает ее в машинный язык.Файл, который содержит программу на
языке ассемблера, называют исходным
файлом.Выход и ассемблера в
действительности является не собственно
машинным языком, а
некоторым промежуточным представлением
программы.Этот выходной
файл называют объектным файлом.Данные в нем называются объектным
кодом.Для получения из него настоящего машинного кода объектный
код должен быть несколько изменен.Для IBM PC это делает программа
редактор связей LINK.Шаг преобразования объектных кодов в
машинные принято называть построением
связей или редактированием
связей.Как пользоваться редактором связей мы увидим в одной из
следующих глав.
Помимо преобразования исходного кода в
объектный ассемблер
создает несколько других выходных
файлов.Один из них -
ассемблерный листинг.Он содержит сообщение о действиях
ассемблера.Зтот файл содержит исходный код вместе с
комментариями, а также объектный код,
сформированный ассемблером.
Фиг.2.9 дает пример листинга ассемблера, иногда называемого
распечаткой.
Microsoft (R) Macro Assembler Version 5.00 10/28/88
16:35:34
Фиг. 2.9 Пример ассемблирования
Page1-1
1PAGE,132
2TITLEФиг. 2.9 Пример
ассемблирования
3 0000CODESEGMENT
4ASSUMECS:CODE
5
6 000003 C3PART1:ADDAX,BX; Сложить с длиной буфера
7
8 0002CODEENDS
9END
Фиг. 2.9 Пример ассемблирования
Взяв пример команды ассемблера, рассмотрим
результаты работы
ассемблера.В правой части распечатки находятся исходные команды.
В левой части - информация,
сгенерированная ассемблером.Первая
колонка содержит номер каждой строки
распечатки.Ассемблер
устанавливает эти номера для исходного
файла.Они строк не
обязательно соотносятся с номерами строк в
исходном файле
сформированном текстовым редактором.
Во второй колонке содержатся адреса
инструкций.Программа LINK
может их изменить, но они являются лучшим
предположением, которое
может сделать ассемблер на шаге
ассемблирования.Следующая колонка
- код команды на машинном языке.Поскольу команды 8088 имеют длину
от 8 до 56 бит, это поле будет изменяться
в размере.Кроме того,
программа LINK может изменить некоторую
информацию в поле объектных
кодов.Редактор связей может изменить любую группу команд,
оперирующих с адресами.Однако, за исключением адресов, листинг
ассемблера дает верные машинные коды,
которые и будут в дальнейшем
исполняться.
В большинстве примеров программ мы будем
использовать листинг
ассемблера.Это позволит нам сразу видеть вырабатываемый ассембле-
ром код.
Другой создаваемый ассемблером файл - файл
перекрестных сыылок.
Этот файл описывает все связи между
метками и командами, которые их
используют.Такая информация незаменима, когда вы пытаетесь
изменить программу.Вы можете воспользовваться перекрестными
ссылками для того, чтобы выявить все
команды, которые обращаются к
определенному участку памяти.Это позволяет программисту
определить все команды, на которые может
повлиять изменение в
другой чассти программы.Использование информации о перекрестных
ссылках будет обсуждаться в главе 5.
|