Принципы работы Ассемблера

    Рассмотрим теперь работу ассемблера в целом.  Детали будут

    обсуждены позднее, но сейчас нам нужно ввести новые термины и

    ознакомиться с реальным результатом работы ассемблера.

 

      Ассемблер берет программу, написанную на языке ассемблера, и

    превращает ее в машинный язык.  Файл, который содержит программу на

    языке ассемблера, называют исходным файлом.  Выход и ассемблера в

    действительности является не собственно машинным языком, а

    некоторым промежуточным представлением программы.  Этот выходной

    файл называют объектным файлом.  Данные в нем называются объектным

    кодом.  Для получения из него настоящего машинного кода объектный

    код должен быть несколько изменен.    Для 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.

Hosted by uCoz