Не забудьте исправить текст программы.




Лабораторная работа № 5

 

ОПРЕДЕЛЕНИЕ КОНТЕКСТА ПРОЦЕССА.

ЧАСТЬ 1.

РАЗРАБОТКА И ОТЛАДКА ПРОГРАММ ПОД УПРАВЛЕНИЕМ ОТЛАДЧИКА DEBUG

 

1. Цель и задачи работы: Целью работы является закрепление теоретических знаний о возможностях программирования на языке Ассемблер. Задачами работы является приобретение навыков трансляции и отладки программ под управлением отладчика DEBUG.

 

2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

 

Команды отладчика DEBUG:

 

R [имя регистра] изобразить содержимое одного или всех регистров
T [число команд] исполнить заданное число команд и изобразить содержимое регистров на каждом шаге
G [смещение] исполнить программу до точки, заданной смещением
D адрес изобразить содержимое ячеек памяти. Адрес задается в виде: регистр: смещение от начала сегмента(обычно смещение равно 0). Регистр название регистра, где хранится начальный адрес сегмента.
Q выйти из отладчика

 

3. ОБОРУДОВАНИЕ

 

IBM совместимые ЭВМ, операционная система MS DOS, оболочки Norton Commander, Volcov Commander, FAR, Windows Commander, программы Masm, Link, Debug.

 

4. ЗАДАНИЕ НА РАБОТУ

 

4.1. Повторить шестнадцатиричную систему счисления.

4.2. Изучить структуру программы на Ассемблере.

4.3. Изучить команды отладчика DEBUG.

4.4. Внимательно ознакомиться с порядком выполнения работы.

4.5. Разобраться в представленной ниже программе, записывающей исходные данные типа байт из области source в обратном порядке в область dest.

title ex_prog - заголовок программы
page,132  
stack segmentpara stack 'stack' - заголовок сегмента стека
db 64 dup('stack ')  
stack ends - конец сегмента стека
dseg segment para public 'data' - заголовок сегмента данных
source db 10,20,30,40 - исходные данные
dest db 4 dup(?)  
dseg ends - конец сегмента данных
cseg segment para public 'code' - заголовок сегмента команд
prog proc far - оформление программы в виде процедуры
assume cs:cseg,ds:dseg,ss:stack - соответствия между регистрами и сегментами
push ds - запоминание контектста предыдущего процесса
mov ax,0
push ax
   
mov ax,dseg  
mov ds,ax  
   
mov dest,0 - обнуление дополнительной области данных
mov dest+1,0
mov dest+2,0
mov dest+3,0
   
mov al,source - запись первого числа области source на четвертую позицию области dest
mov dest+3,al
mov al,source+1 - запись второго числа области source на третью позицию области dest
mov dest+2,al
mov al,source+2 - запись третьего числа области source на вторую позицию области dest
mov dest+1,al
mov al,source+3 - запись четвертого числа области source на первую позицию области dest
mov dest,al
ret - возврат в запомненное ранее состояние
prog endp - конец процедуры
cseg ends - конец сегмента команд
end our_prog - конец программы

 

4.6. Скопировать программу PRIMER.ASM под другим именем.

4.7. Внести изменения в программу в зависимости от номера варианта.

 

N варианта Кол-во входных данных Значения входных данных
    25, 33, 45, 56
    20, 40, 60, 70
    15, 20, 25, 30, 35
    10, 11, 12, 13, 14
    5, 15, 45, 55
    15, 16, 17, 63
    21, 23, 25, 27, 31
    45, 55, 56, 67, 70
    40, 50, 60, 100, 200
    30, 130, 230, 150
    41, 42, 43, 44, 45
    71, 72, 73, 81, 83
    101, 102, 103, 110
    51, 55, 61, 65, 71
    49, 59, 69, 79

 

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

4.8. Внести изменения в программу, поменяв тип исходных данных на двойное слово.

 

5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

 

5.1. В любом редакторе исправить программу, вводя исходные данные своего варианта. В первой программе тип данных - байт.

5.2. Оттранслировать исходный модуль. Для этого набрать команду:

>masm {имя файла},

где {имя файла} - имя файла, содержащего исходный модуль, без расширения. На запросы ответить так:

object filename[ ]: нажать клавишу перевода строки

source listing[ ]: набрать имя файла без расширения

cross reference[ ]: нажать клавишу перевода строки

В результате создается объектный файл и листинг трансляции.

5.3. Просмотр листинга трансляции. Для этого вызвать на экран файл с расширением LST клавишей F3. Листинг состоит из двух частей. В левой части находится столбец шестнадцатиричных значений смещения адреса (в байтах) от начала сегмента и столбцы объектного кода каждого оператора. В правой части - текст исходной программы.

Особое внимание обратить на смещение оператора RET.

5.4. Создать исполняемый файл. Для ввода загрузчика ввести команду:

>link {имя файла}

На все запросы нажимать клавишу перевода строки.

В результате создается исполняемый файл с расширением EXE.

5.5. Выполнить программу. Для этого используется отладчик DEBUG. Для начала ввести команду:

>debug {имя файла}.exe

Просмотреть содержимое регистров. Сделать 5-6 шагов. Выполнить программу до конца, используя смещение команды RET.

5.6. Проверить правильность работы программы. Просмотреть содержимое сегмента данных.

5.7. Просмотреть содержимое сегмента команд.

5.8. Выйти из отладчика.

5.9. Повторить пункты 5.1-5.8, переопределив тип данных – слово.

Не забудьте исправить текст программы.

5.10. Повторить пункты 5.1-5.8, переопределив тип данных – двойное слово и исправив текст программы.

 

6. ОФОРМЛЕНИЕ ОТЧЕТА.

 

Отчет должен включать для трех программ:

6.1. Текст листинга трансляции (2 страницы).

6.2. Содержимое регистров после команд отладчика R и T.

6.3. Содержимое сегмента данных и сегмента команд.

 

7. КОНТРОЛЬНЫЕ ВОПРОСЫ.

 

7.1. Как перевести число из одной системы счисления в другую?

7.2. Из каких основных частей состоит программа на Ассемблере?

7.3. Как оформляется сегмент данных?

7.4. Как оформляется сегмент команд?

7.5. Какие псевдооператоры данных вы знаете?

7.6. Как работает оператор MOV?

7.7. Как получить листинг трансляции?

7.8. Как получить исполняемый модуль?

7.9. В каких случаях используется отладчик DEBUG?

7.10. Перечислите команды отладчика.

7.11. Как просмотреть содержимое сегментов?

7.12. Сколько и какие регистры вы знаете?

7.13. В чем особенность регистров данных?

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-12-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: