Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР№1_СПО_Балыбердин_Н.А

..docx
Скачиваний:
69
Добавлен:
05.09.2020
Размер:
377.92 Кб
Скачать

ФГБОУ ВО Уфимский государственный авиационный технический университет

Кафедра АСУ

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

Тема: «ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ DOS DEBUG ДЛЯ ОТЛАДКИ И ТЕСТИРОВАНИЯ ПРОГРАММ»

по дисциплине: «Системное программное обеспечение»

Выполнили: ст. гр. ИВТ-414

Балыбердин Н.А.

Проверил:

Преподаватель кафедры АСУ

Лянцев О.Д.

Уфа 2020

Цель работы: Целью настоящей работы является изучение возможностей

системной программы – отладчика DEBUG по программированию

компьютера IBM в машинных кодах.

Задания:

  1. Область видеопамяти (Video Display Area) для цветного монитора в текстовом режиме начинается с адреса В800[0]. (а) Используйте команду DEBUG D для просмотра этой области памяти.

Используйте дополнительные команды D для просмотра всей области видеопамяти.

(б) Используйте команду DEBUG F (Fill – заполнить) для вывода на экран 50 звездочек (символов * – код 2АН).

F B800:0 L64 2a 16.

  1. Рассмотрим следующие инструкции машинного языка:

В0 1С D0 E0 ВЗ 12 F6 ЕЗ ЕВ F6

Используйте команду DEBUG E для ввода этой программы, начиная с адреса CS:100. Затем введите D CS:100 для просмотра введенного кода. После этого введите R и последовательными командами Т выполните программу до достижения инструкции JMP. Каков конечный результат в регистре АХ? Конечный результат в регистре AX=03f0

  1. Используйте DEBUG для ввода следующей программы в машинных кодах:

Код (с адреса 100Н): А0 00 02 D0 E0 F6 26 01 02 A3 02 02 90

Данные (с адреса 200Н): 1E 16 00 00

Введите команды D для просмотра введенных кода и данных. После этого введите команду R и последовательными командами Т. Каков конечный результат в регистре АХ?AX=0528

Эта программа выполняет следующие действия: (а) помещает значение байта DS:0200H (1E) в регистр AL; (б) сдвигает содержимое AL на один бит влево; (в) умножает AL на байт, содержащийся в ячейке с адресом DS:0201H (16), (г) помещает произведение из АХ в слово, начинающееся с адреса DS:0202H

  1. Для пункта 2, введите команды, записывающие программу на диск под именем HEXMULT.COM

  1. Используйте команду DEBUG А для ввода следующих инструкций:

MOV DX,2E

ADD DX,IF

SHL DX,01

SUB DX,BA

JMP 100.

Дизассемблируйте эти инструкции и проследите их выполнение вплоть до JMP, и просмотрите значение в регистре DX после выполнения программы. Dx=ffe0

  1. Используйте DEBUG для создания и выполнения программы, выводящей на экран фразу "Coffee Break". Начните с А 100 для ввода инструкций и с А 120 для ввода фразы (не забудьте про ограничитель $).

  1. Используйте DEBUG для создания и запуска программы, запоминающей три введенных с клавиатуры символа и выводящей их на экран.

A 100

MOV AH, 10

INT 16

MOV [200], AL

XOR AX, AX

MOV AH, 10

INT 16

MOV [201], AL

XOR AX, AX

MOV AH, 10

INT 16

MOV [202], AL

XOR AX, AX

MOV AH, 09

MOV DX, 200

MOV BYTE PTR [203], 24

INT 21

JMP 100

Ответы на контрольные вопросы:

1. Объясните назначение следующих команд DEBUG: (а) А, (б) U, (в)

Р, (г) Т, (д) Q, (e) D, (ж) R, (з) Е.

(а) А - преобразовать инструкции символьного кода в машинный код;

(б) U - преобразовать (дизассемблировать) машинный код в

символьный.

(в) Р - продолжить или выполнить группу связанных инструкций;

(г) Т - отследить выполнение одной инструкции;

(д) Q - завершить сеанс работы с DEBUG;

(е) D - показать содержимое области памяти в шестнадцатеричном

формате;

(ж) R - показать содержимое одного или более регистров в

шестнадцатеричном формате;

(з) Е - ввести данные в память, начиная с определенного адреса.

2. Укажите команды DEBUG, с помощью которых можно сделать

следующее.

(а) Просмотреть содержимое всех регистров

– R

(б) Просмотреть содержимое регистра IP и установить его в 0100Н

– R IP

IP 0000

: 0100

(в) Просмотреть данные, хранящиеся в памяти, начиная со смещения

2ВСН в сегменте данных.

- D DS:2BC

(г) Просмотреть данные, находящиеся в памяти, начиная с ячейки с

адресом 3AFH. (Замечание: разделите этот адрес на части,

соответствующие сегменту и смещению.)

- D CS:3AF

(д) Дизассемблировать символьный код по адресам от 100Н до 12ВН.

- U 100,12B

(е) Ввести 24А63ВН в сегмент данных, начиная с адреса 18АН.

- E 18A 24A63B

3. Укажите машинный код, выполняющий следующие действия:

(а) прибавление непосредственного значения 03А8Н к АХ.

05 А8 03

(б) помещение значения 2СА4Н в регистр АХ.

В8 А4 2С

4. Предположим, введена такая команда DEBUG:

Е CS:100 B8 45 01 05 25 00

Значение 45 на самом деле должно было быть 54 Укажите команду,

изменяющую только этот байт, которая исправляет сделанную ошибку.

- E CS:101 54

5. Предположим, что в DEBUG введена следующая команда:

Е CS:100 B8 05 1В 05 00 2С ЕВ F8

(а) Какие три символьных инструкции здесь закодированы? (Первая

программа в работе содержит подсказку.)

mov ax, 1B05

add ax, 2C00

jmp 100

(б) При исполнении этой программы вы обнаруживаете, что в регистр

АХ помещается значение 4705 вместо ожидаемого 547 В чем состоит

ошибка и как ее исправить?

Нужно ввести команду Е в правильном виде. Ошибка может состоять в некорректных введенных данных. При загрузке данных из памяти в регистр первый байт идёт в младший регистр (AL), а второй в старший (AH), так как регистр AX имеет форму AH:AL мы ожидали что число запишется как 05:47, однако из памяти 2 байта (05 47) записались в регистр в обратном порядке (47:05), чтобы избежать такой ситуации следует записывать в память операнды в обратном порядке:

-E CS:100 B8 47 05

(в) Исправив ошибку, нужно повторно выполнить программу, начиная

С первой инструкции. Какие команды DEBUG необходимо использовать?

- R IP

100

T

6. Каково назначение инструкции INT?

INT (interrupt – прерывание), которая осуществляет выход из программы, вызов подпрограммы DOS или BIOS, выполнение заданной функции и возвращение в программу. Есть разные типы операций INT, некоторые из них требуют наличия кода функции (function code) в регистре АН для выполнения определенного действия. С помощью этой команды можно узнать дату и время, определить установленное оборудование, вводить с клавиатуры и выводить на экран данные.

Вывод: Мы изучили возможности системной программы – отладчика DEBUG по программированию компьютера IBM в машинных кодах.