Лабораторная работа n 4. 'assembler

Часть 1. Этапы формирования ассемблерной программы

Цель цикла работ - ознакомиться: сэлементамипрограммированияна языкеассемблера ПК, со структурой исполняемых .ЕХЕ машинных программ, спроцессами ассемблирования и создания исполняемой машиннойпрограммы,с отладкой программ в среде отладчикаDEBUG, получить навыки работына профессиональной ПК . Изучить взаимодействие компонентов ПК при исполнении машинной программы и процедур прерывания. Познакомиться с процедурами машинного перевода ASCII-кодов в двоичные коды и обратно.

Необходимые ресурсы:

· Оборудование: IBM PC совместимая ПК.

· Программное обеспечение: MS DOS, транслятор-компилятор MASM; EDIT NC или иной текстовый редактор, формирующий файлы с расширением .TXT; загрузчик программ LINK; отладчик программ DEBUG.

Порядок выполнения работ

1. Ознакомиться с теоретическими вопросами выполнения заданий лабораторной работы: сэлементамипрограммированияна языкеассемблера ПК, с системой прерываний ПК и использованием прерываний в ассемблере, со структурой исполняемых .ЕХЕ машинных программ, спроцессами ассемблирования и создания исполнимой машиннойпрограммы

2. Выполнить задания.

3. Ознакомить преподавателя с результатами работы. Ее завершение по разрешению преподавателя . Получение задания на следующую работу.

Перечень заданий

1. Ознакомиться с элементами программирования дляПК на языкеассемблера ( включая : структуру иназначениерегистровойпамятиМП, способы адресации ячеек основной памяти, основныепрерыванияBIOSи DOS, используемые при работе с клавиатурой, дисплеемидисковойпамятью).

2. Ознакомиться с процессами ассемблирования, редактирования связей и создания исполняемых машинных программ с расширением .ЕХЕ.

Этапы формирования программы

1. Составление программы и ее ввод под каким-нибудь именем на диск (дискету).

Привводепрограммы используется какой-либо текстовой редактор,например редактор NC

2. Трансляция (ассемблирование) программы.

При использовании транслятора MASM вводится:

MASM c:prog.asm или просто MASM.

Появится запрос:

Surce filename [.asm]:

; указать путь к файлу и имя файла

; (если оно не было указано ранее).

Object filename [prog.obj]:

; если имя объектной программы

; (объектного модуля) другое, то

; следует его указать, иначе нажать

; клавишу ENTER (RETURN).

Source listing [nul.lst]:

; если нужен листинг программы в

; машинных кодах, ввести имя

; дисковода, где его формировать,

; иначе - ENTER.

Cross-reference [nul.crf]: ; если нужен листинг перекрестных

; ссылок программы, ввести имя

; дисковода, иначе - ENTER.

Альтернативный вариант вызова ассемблера:

MASM [c:]prog, c:, c:, c:

Примечание:

ЛИСТИНГ - распечатка, файл для распечатки. Листинг программы содержит программу исходную и в машинных кодах, атакжеобнаруженныепри трансляции ошибки в программе; листинг перекрестныхссылокпоказываетименапеременных и номера строк программы, где эти переменные используются.

3. Компоновка объектного модуля (загрузка и редактирование связей).

Вводится:

LINK c:prog.obj ;(или просто LINK)

Появится запрос:

Object modules [.obj]

; указать имя файла .obj, если оно не ; было указано ранее.

Run file [prog.exe]

; если имя исполняемой программы другое,

; то следует его ввести, иначе - ENTER.

List file [nul.map]; следуетввести CON.

Libraries [ .lib]

; обычно - ENTER (если при редактировании

; дополнительных библиотек связей не

; требуется).

Альтернативный вариант вызова загрузчика:

LINK [c:]prog.obj, c:, con

Примечание.

.map-файл содержит таблицу имен и размер сегментов, атакже ошибки, обнаруженные при загрузке; ввод CON означает требование вывода их на экран дисплея.

4. Отладка программы (если есть необходимость). Можно использовать отладчик Debug. Вызов отладчика Debug:

DEBUG c:prog.exe.

5. Выполнение программы.

При наличии приглашения к работе MS DOS ввести имя программы:

c:prog[.exe]

Структура исходной программы на языке ассемблера для получения исполняемой программы.exe.

Операционнаясистема MS DOS предъявляет некоторые обязательные требованияк структуре .ASM-программы, предназначенной для последующего создания .EXE-программы:

· программа может использовать 4 сегмента памяти, начальные адресакоторыхдолжны быть загружены в регистры микропроцессора: CS, SS, DS и ES, а сами сегменты в явном виде определены в программе в видеоператорныхскобок:имя_сегментаsegment ... имя_сегмента ends(весии MS DOS 4.0 и выше допускают болеепростоеуказание сегментов в программе: имя_сегмента);

· впрограммедолжнобытьуказание: какие сегментные регистры закрепляютсязаиспользуемымисегментами памяти; при исполнении программысегментныерегистрыCS, SS, ES в соответствии с этими указаниями загружаются автоматически;

· сегмент данных DS в .EXE-программе не может быть загружен авто матически, поскольку он используется программой-загрузчиком (Link) для формирования начального адреса служебной области памяти - префикса программного сегмента (PSP), непосредственно предшествующего любойисполняемойпрограмме.

Регистр сегментаданныхDSдолженбыть инициирован принудительно – для этого следует в самом начале исполняемой .EXE-программы записать в стеквектор-адресвозвратакслужебной области PSP: содержимое регистраDSинулевоесмещение, а затем в регистр DS загрузить адрес сегмента данных исполняемой программы.

Примечание. PSP - группа служебных словвоперативнойпамяти,формируемаядля каждой загружаемой программыпользователяи занимающая обычно 256 байт (100Н байт). При загрузке программы пользователя в ОЗУ автоматически формируетсяPSP,и ее начальный адрес записывается в регистр DS.

Обеспечитьпосле завершения выполнения программы возврат к префиксупрограммного сегмента, оформив обращение к исполняемой программе в виде обращения к процедуре (главной процедуре, обязательно с атрибутом far) и поместив в конце программы команду возврата ret (выход из программы можно выполнитьтакже используя прерывание 20H DOS или функцию 4C прерывания 21H DOS, но управление при этом передается не вPSP, а непосредственно в резидентную часть программы COMMAND.COM).

Наши рекомендации