Микропроцессоры и МПС. Лабораторные работы №5-6

Практическая работа №5-6
Работа в Debug. Использование инструкции INT.

Цель работы: сформировать умения использовать отладчик для работы с ассемблерными программами

Пояснения к работе

В программе debug можно запрашивать информацию о системе. Для этого используется инструкция INT, которая осуществляет выход из программы, вызов программы DOS или BIOS, выполнение заданной функции и возвращение в вашу программу. Есть разные типы операций INT, некоторые из них требуют наличия кода функции в регистре АН для выполнения определенного действия.
Чтобы вручную установить значение в регистре IP, необходимо:
1. Ввести команду R IP для вывода содержимого регистра IP.
2. Ввести значение 100 и нажать .
А <смещение> - ввод машинных команд в ассемблерном виде в сегмент кода. Первую команду программы следует начинать вводить со смещения 0100. Далее система ждет поочередного ввода команд Ассемблера. Для окончания ввода нужно нажать Enter после пустой строки.
G - запуск программы, находящейся в оперативной памяти по адресу 0100. Для вызова программы на выполнение нужно предварительно позаботиться, чтобы в регистре IP (счетчик команд) было число 0100.


Задания

Задание 1. Получение текущих значений даты и времени.
Инструкция для получения текущих значений даты и времени – INT 21H, с кодом функции 2AH. Введите в debug команду А 100, а затем следующие инструкции:
MOV AH, 2A
INT 21
JMP 100 ,
Введите R для просмотра регистров и Т для выполнения инструкции MOV. После этого введите Р для выполнения подпрограммы обработчика прерываний; выполнение остановится на инструкции JMP. Регистры будут содержать в шестнадцатеричной форме следующую информацию:
AL: день недели, где 0=воскресенье
CX: год (например , 07D4H=2004)
DH: месяц (от 01Н до 1CH)
DL: день месяца (от 01Н до 1FH)
Внимание! Определить текущую дату и результат записать в тетрадь.
Операция для получения текущего времени – INT 21H с кодом функции 2СН. Сначала используйте команду R IP для установки IP в 0100Н, а затем введите следующие команды:
А 100
MOV AH, 2С
INT 21
JMP 100 ,
Выполните программу так же, как и предыдущую. Операция помещает число часов в СН (в 24-часовом формате, где 00 – полночь), минуты – в CL, секунды – в DH и сотые доли секунды – в DL.
Внимание! Определить текущее время и результат записать в тетрадь.
Задание 2. Использование INT для вывода на дисплей.
Введите в debug команду А 100, а затем – следующие инструкции:
100 MOV AH, 09
102 MOV DX, 109
105 INT 21
107 J
·MP 100
109 DB YOUR NAME’, $’,
Две инструкции MOV указывают INT 21 организовать вывод на экран (АН=09Н) и с какого начального адреса (DX=109). По смещению 109Н начинается строка, где DB означает «define byte» - «определить байт». Символы, подлежащие выводу, заключены в апострофы (). За строкой, которую необходимо вывести, следует знак доллара ($), также заключенный в апострофы, указывающий INT на конец вывода.
Введите R для выполнения просмотра регистров и первой инструкции, две команды Т – для выполнения двух инструкций MOV, и Р – для выполнения INT 21H, и на экране вы увидите строку, заключенную в апострофы.
Внимание! Запишите содержимое регистров в тетрадь после выполнения каждой команды.
Задание 3. Использование INT для ввода с клавиатуры.
Введите в debug команду А 100, а затем – следующие инструкции:
100 MOV AH, 10
102 INT 16
104 JMP 100
Первая инструкция, MOV, указывает код функции, 10Н, задающий использование INT 16Н для ввода с клавиатуры. При выполнении инструкций обработчиком с клавиатуры считывается символ и помещается в регистр AL. Введите R для просмотра регистров и следующей инструкции, и Т – для выполнения инструкции MOV. Затем введите Р для выполнения INT 16Н, после чего система будет ожидать нажатия клавиши. Если вы нажмете клавишу 1, вы увидите, что в AL помещено число 31Н (это ASCII-код цифры 1). Введите Т для выполнения инструкции JMP 100, затем еще раз Т – для выполнения MOV AH, 10. Когда вы введете Р для выполнения INT 16Н, система вновь будет ожидать нажатия клавиши. Можно продолжать ввод до бесконечности, следуя описанной процедуре.
Внимание! Введите 3 любых числа и запишите содержимое регистров в тетрадь после выполнения каждой команды.

После выполнения данной работы Вы должны
знать назначение инструкции INT;
получать текущее значение даты и времени;
выводить символы на экран;
вводить символы с клавиатуры.

Контрольные вопросы
Каково назначение инструкции INT?
Используйте debug для создания и выполнения программы, выводящей на экран ваши фамилию и имя. Программу записать в тетради.



HYPER15Основной шрифт абзаца

Приложенные файлы

  • doc prac 5-6
    Размер файла: 41 kB Загрузок: 1