Ассемблирование программы

Автор работы: Пользователь скрыл имя, 23 Апреля 2013 в 12:10, лекция

Описание работы

Когда вы ассемблируете файл HELLO.ASM, Макро Ассемблер превращает текст инструкций в этом файле в их двоичный эквивалент в объектном файле HELLO.OBJ. Этот файл является промежуточным файлом (промежуточным звеном в процессе перехода от текстового к выполняемому файлу). Файл HELLO.OBJ содержит всю информацию, необходимую для создания выполняемого кода из инструкций, содержащихся в файле HELLO.ASM, но она записана в виде, который позволяет комбинировать ее с другими объектными файлами для создания одной программы.

Файлы: 1 файл

Hello_world.doc

— 48.50 Кб (Скачать файл)

Кафедра Вычислительной Техники СПбГУ  ИТМО


Шаг 1.

Войдите в текстовый  редактор и введите следующие  строки:

 

.model small ;определили модель памяти как small

.stack 128 ;выделили под программу 128 байт памяти

.data ;объявили сегмент данных

mess db 'Hello world!$' ;определили переменную типа databyte размером 1 байт

.code ;объявляем сегмент кода

main:

;следующими  двумя строками мы связываем  адрес сегмента данных с его 

реальным  расположением в памяти. Это связано с тем, что сегмент кода и сегмент данных расположены по одному и тому же адресу в памяти при инициализации программы.

mov ax,@data

mov ds,ax

;следующие  три строки кода выводят на  экран надпись "Hello world!"

lea dx,mess

mov ah,09h

int 21h

;последние две строчки корректно завершают программу

mov ax,4c00h

int 21h

end main

 

Сохраните файл под названием HELLO.ASM

 

Шаг 2. Ассемблирование программы

Необходимо  преобразовать программу в выполняемый  вид. Как показано на схеме ниже, где изображен полный цикл создания программы (редактирование, ассемблирование,  компоновка и  выполнение), это потребует двух дополнительных шагов - ассемблирования и компоновки.

На этапе ассемблирования  исходный код (текст программы) превращается  в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей  комбинируются в выполняемую программу. Ассемблирование и компоновку можно выполнять с помощью командной строки.

 

 

                               Создание новой программы

                                          ¦

         --------------------------------*¦

         ¦                                ¦

         ¦                          Редактирование

         ¦                                ¦

         ¦          -----------------------------------------------¬

         ¦          ¦     Исходный файл Ассемблера HELLO.ASM       ¦

         ¦          L---------------------T-------------------------

         ¦                                ¦

         ¦                         Ассемблирование

         ¦                                ¦

         ¦          ----------------------------------------------¬

         ¦          ¦          Объектный  файл HELLO.OBJ           ¦

         ¦          L---------------------T------------------------

         ¦                                ¦

         ¦                            Компоновка

         ¦                                ¦

         ¦          ----------------------------------------------¬

         ¦          ¦         Выполняемый  файл HELLO.EXE          ¦

         ¦          L---------------------T------------------------

         ¦                                ¦

         ¦                            Выполнение

         ¦   -----------------------¬     ¦

         L---+ Если нужны изменения ¦*-----

             L-----------------------

 

 

Для ассемблирования  файла HELLO.ASM в коммандной строке cmd.exe наберите:

 

          ml hello.asm

 

Если  вы  не  задали  другое  имя,  файл HELLO.ASM  будет ассемблирован в файл HELLO.OBJ.

 

Если вы введете  файл HELLO.ASM в точности так, как показано, то вы не получите никаких предупреждающих сообщений или сообщений об ошибках. Если вы получаете такие сообщения, они появляются  на экране  наряду  с номерами строк, указывающими строки, где содержатся ошибки. При получении сообщений об ошибках проверьте исходный код (текст) программы и убедитесь, что он выглядит точно так, как исходный код в нашем примере,  а  затем  снова  ассемблируйте программу.

 

Когда вы ассемблируете  файл HELLO.ASM, Макро Ассемблер превращает  текст  инструкций в этом файле  в их двоичный эквивалент в объектном  файле HELLO.OBJ. Этот файл является промежуточным файлом (промежуточным звеном в процессе перехода от текстового к выполняемому файлу). Файл HELLO.OBJ содержит всю информацию,  необходимую для создания выполняемого кода из инструкций, содержащихся в файле HELLO.ASM, но она записана в виде,  который позволяет комбинировать ее  с другими объектными файлами для создания одной программы.

 

Шаг 3. Компоновка программы

После ассемблирования  файла HELLO.ASM вы продвинулись только на  один шаг в процессе создания программы. Теперь, если вы скомпонуете только что полученный объектный код в выполняемый вид, вы сможете запустить программу.

 

Для  компоновки  программы  используется  программа   ML.EXE, представляющая собой поставляемый вместе с Макро Ассемблером компоновщик. Введите командную строку:

 

          link hello.obj

 

Когда  компоновка  завершится, компоновщик автоматически присвоит  файлу  с расширением .EXE имя,  совпадающее с именем вашего объектного файла (если вы не определили другое имя).

 

 

В дальнейшем достаточно запускать только ml.exe, который ассемблирует и сразу скомпонует Вашу программу.

Шаг 4. Запуск программы

Теперь программу  можно запустить на выполнение. В консоли введите hello. На экран выведется сообщение:

 

          Hello world!

 

 

Шаг 5. Ассемблирование и компановка программы для ее отладки

 

Изучите параметры  ассемблирования программы ml.exe

Используйте ключ /Zi при ассемблировании программы.

Создайте .bat файл для автоматизации ассемблирования, компановки программы, а также ее автоматического запуска в отладчике. Перед ассемблированием и компановкой сделайте автоматическое удаление предыдущих версий программы.

 

Шаг 6. Отладка программы

Для отладки специально скомпанованной программы используйте отладчик CodeView (cv.exe) или аналогичный.

Выполните программу по шагам. Проследите за состоянием регистров.

 



Лукьянов Н. под руководством Дергачева А.М.


Информация о работе Ассемблирование программы