Assembler для начинающих


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



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


    Рассмотрим теперь работу ассемблера в целом.  Детали будут
    обсуждены позднее, но сейчас нам нужно ввести новые термины и
    ознакомиться с реальным результатом работы ассемблера.
 
      Ассемблер берет программу, написанную на языке ассемблера, и
    превращает ее в машинный язык.  Файл, который содержит программу на
    языке ассемблера, называют исходным файлом.  Выход и ассемблера в
    действительности является не собственно машинным языком, а
    некоторым промежуточным представлением программы.  Этот выходной
    файл называют объектным файлом.  Данные в нем называются объектным
    кодом.  Для получения из него настоящего машинного кода объектный
    код должен быть несколько изменен.    Для 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.




Содержание раздела