Рассмотрим теперь работу ассемблера в целом.  Детали будут обсуждены позднее, но сейчас нам нужно ввести новые термины и  ознакомиться с реальным результатом работы ассемблера.

Ассемблер берет программу, написанную на языке ассемблера, и  превращает ее в машинный язык.  Файл, который содержит программу на  языке ассемблера, называют исходным файлом.  Выход и ассемблера в  действительности является не собственно машинным языком, а  некоторым промежуточным представлением программы.  Этот выходной  файл называют объектным файлом.  Данные в нем называются объектным  кодом. Для получения из него настоящего машинного кода объектный  код должен быть несколько изменен.  Для IBM PC это делает программа  редактор связей LINK.  Шаг преобразования объектных кодов в  машинные принято называть построением связей или редактированием  связей. Как пользоваться редактором связей мы увидим в одной из  следующих глав.

Помимо преобразования исходного кода в объектный ассемблер  создает несколько других выходных файлов.  Один из них -  ассемблерный листинг.  Он содержит сообщение о действиях  ассемблера.  Этот файл содержит исходный код вместе с  комментариями, а также объектный код, сформированный ассемблером.  Фиг. 2.9 дает пример листинга ассемблера, иногда называемого  распечаткой.

          Microsoft (R) Macro Assembler Version 5.00              10/28/88

             16:35:34

          Фиг. 2.9 Пример ассемблирования                        Page  1-1

 

               1                              PAGE   ,132

               2                             TITLE   Фиг. 2.9 Пример ассемблирования

               3 0000                   CODE   SEGMENT

               4                              ASSUME CS:CODE

               5

               6 0000  03 C3           PART1:  ADD     AX,BX   ; Сложить с длиной буфера

               7

               8 0002                   CODE   ENDS

               9                              END

 

          Фиг. 2.9 Пример ассемблирования

Взяв пример команды ассемблера, рассмотрим результаты работы  ассемблера.  В правой части распечатки находятся исходные команды.  В левой части - информация, сгенерированная ассемблером.  Первая  колонка содержит номер каждой строки распечатки.  Ассемблер  устанавливает эти номера для исходного файла.  Они строк не  обязательно соотносятся с номерами строк в исходном файле  сформированном текстовым редактором.

Во второй колонке содержатся адреса инструкций.  Программа LINK  может их изменить, но они являются лучшим предположением, которое  может сделать ассемблер на шаге ассемблирования.  Следующая колонка  - код команды на машинном языке.  Поскольку команды 8088 имеют длину  от 8 до 56 бит, это поле будет изменяться в размере.  Кроме того,  программа LINK может изменить некоторую информацию в поле объектных  кодов. Редактор связей может изменить любую группу команд,  оперирующих с адресами.  Однако, за исключением адресов, листинг  ассемблера дает верные машинные коды, которые и будут в дальнейшем  исполняться.

В большинстве примеров программ мы будем использовать листинг  ассемблера.  Это позволит нам сразу видеть вырабатываемый ассемблером код.

Другой создаваемый ассемблером файл - файл перекрестных ссылок.  Этот файл описывает все связи между метками и командами, которые их  используют.  Такая информация незаменима, когда вы пытаетесь  изменить программу.  Вы можете воспользоваться перекрестными  ссылками для того, чтобы выявить все команды, которые обращаются к  определенному участку памяти.  Это позволяет программисту  определить все команды, на которые может повлиять изменение в  другой части программы. Использование информации о перекрестных  ссылках будет обсуждаться в главе 5.