Системное программное обеспечение ЛР-1. ЛР-1 СПО Кислицын К.К. Чепурин М.А. ИВТ-423. Отчет по лабораторной работе 1 использование программы dos debug для отладки и тестирования программ
Скачать 0.96 Mb.
|
ФГБОУ ВО Уфимский государственный авиационный технический университет Кафедра АСУ Отчет по лабораторной работе №1 «ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ DOS DEBUG ДЛЯ ОТЛАДКИ И ТЕСТИРОВАНИЯ ПРОГРАММ» По дисциплине «Системное программное обеспечение» Выполнил: ст. гр. ИВТ-423 Чепурин М.А. Кислицын К.К. Проверил: Лянцев О.Д. Уфа 2022 Цель работы: изучение возможностей системной программы – отладчика DEBUG по программированию компьютера IBM в машинных кодах. Ход работы: Область видеопамяти (Video Display Area) для цветного монитора в текстовом режиме начинается с адреса В800[0]. А) Используйте команду DEBUG D для просмотра этой области памяти. Результат выполнения пункта А представлен на рисунке 1. Рис. 1 – Результат выполнения задания 1А Б) Используйте команду DEBUG F (Fill – заполнить) для вывода на экран 50 звездочек (символов * – код 2АН), результат выполнения данного пункта представлен на рисунке 2. Рис. 2 – Результат выполнения пункта 1Б Рассмотрим следующие инструкции машинного языка: В0 1С D0 E0 ВЗ 12 F6 ЕЗ ЕВ F6 Используйте команду DEBUG E для ввода этой программы, начиная с адреса CS:100. Затем введите D CS:100 для просмотра введенного кода. После этого введите R и последовательными командами Т выполните программу до достижения инструкции JMP. Каков конечный результат в регистре АХ? Результат выполнения представлен на рисунках 3-4. Рис. 3 – Выполнение задания 2 Рис. 4 – Результат выполнения задания 2. Как видно из рисунка 4, конечный результат в регистре AX = 03F0. Используйте DEBUG для ввода следующей программы в машинных кодах: Код (с адреса 100Н): А0 00 02 D0 E0 F6 26 01 02 A3 02 02 90 Данные (с адреса 200Н): 1E 16 00 00 Введите команды D для просмотра введенных кода и данных. После этого введите команду R и последовательными командами Т выполните программу до достижения инструкции JMP. Каков конечный результат в регистре АХ? Введите еще одну команду D DS:0200 и посмотрите, в каком виде произведение хранится в памяти. Результат выполнения представлен на рисунках 5-7. Рис. 5 – Выполнение задания 3 Рис. 6 – Выполнение задания 3 Рис. 7 – Результат выполнения задания 3 Как видно на рисунке 7, конечный результат в регистре АХ равен 0528. Для пункта 2, введите команды, записывающие программу на диск под именем HEXMULT.COM. Результат выполнения представлен на рисунке 8. Рис. 8 – Результат выполнения задания 4 Используйте команду DEBUG А для ввода следующих инструкций: MOV DX,2E ADD DX,1F SHL DX,01 SUB DX,BA JMP 100. Дизассемблируйте эти инструкции и проследите их выполнение вплоть до JMP, и просмотрите значение в регистре DX после выполне-ния программы. Результат выполнения представлен на рисунках 9-10. Рис. 9 – Выполнение задания 5 Рис. 10 – Результат выполнения задания 5. Как видно на рисунке 10, конечный результат регистра DX равен FFE0. Используйте DEBUG для создания и выполнения программы, выводящей на экран фразу "Coffee Break". Начните с А 100 для ввода инструкций и с А 120 для ввода фразы (не забудьте про ограничитель $), результат выполнения представлен на рисунках 11 и 12. Рис. 11 – Выполнение задания 6 Рис. 12 – Результат выполнения задания 6 Используйте DEBUG для создания и запуска программы, запоминающей три введенных с клавиатуры символа и выводящей их на экран. (а) Начните с А 100. (б) Используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [200]. (в) Опять используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [201]. (г) В третий раз используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [202]. (д) Используйте команду Е 123 '$' для установки ограничителя $ после трех введенных символов. (е) Наконец, используйте INT 21 для вывода символов. Результат выполнения задания №7 представлен на рисунках 13-15. Рис. 13 – Выполнение задания 7. Рис. 14 – Выполнение задания 7 Рис. 15 – Результат выполнения задания 7 Была введена строка «uaa». Ответы на контрольные вопросы: 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 в машинных кодах. |