Главная страница
Навигация по странице:

  • Цель работы

  • Ответы на контрольные вопросы: 1. Объясните назначение следующих команд DEBUG: (а) А, (б) U, (в) Р, (г) Т, (д) Q, (e) D, (ж) R, (з) Е.

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

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

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

  • Системное программное обеспечение ЛР-1. ЛР-1 СПО Кислицын К.К. Чепурин М.А. ИВТ-423. Отчет по лабораторной работе 1 использование программы dos debug для отладки и тестирования программ


    Скачать 0.96 Mb.
    НазваниеОтчет по лабораторной работе 1 использование программы dos debug для отладки и тестирования программ
    АнкорСистемное программное обеспечение ЛР-1
    Дата27.10.2022
    Размер0.96 Mb.
    Формат файлаdocx
    Имя файлаЛР-1 СПО Кислицын К.К. Чепурин М.А. ИВТ-423.docx
    ТипОтчет
    #756995

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

    Кафедра АСУ

    Отчет по лабораторной работе №1

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

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

    Выполнил:

    ст. гр. ИВТ-423

    Чепурин М.А.

    Кислицын К.К.

    Проверил:

    Лянцев О.Д.

    Уфа 2022

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

    Ход работы:

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

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



    Рис. 1 – Результат выполнения задания 1А

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



    Рис. 2 – Результат выполнения пункта 1Б

    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.

    1. Используйте 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.

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



    Рис. 8 – Результат выполнения задания 4

    1. Используйте команду 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.

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



    Рис. 11 – Выполнение задания 6



    Рис. 12 – Результат выполнения задания 6

    1. Используйте 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 в машинных кодах.


    написать администратору сайта