Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_lab__rab_spo.doc
Скачиваний:
14
Добавлен:
05.09.2020
Размер:
433.66 Кб
Скачать

2.2.18. Программа на языке Ассемблера

DEBUG также можно использовать для ввода программ на языке Ассемблера. Рассмотрим команды DEBUG А и U, используемые для ввода выражений на языке Ассемблера в компьютер.

2.2.18.1. Команда a (Assemble)

Команда А приказывает DEBUG начать воспринимать ввод символьных инструкций и преобразовывать их в машинный код. Инициализируйте начальный адрес для инструкций в сегменте кода смещением 100Н с помощью команды

А 100 <Enter>

DEBUG выведет адрес сегмента кода и смещения (01 ООН) в виде хххх:0100. Введите следующие инструкции:

MOV CL,42 <Enter>

MOV DL,2A <Enter>

ADD CL,DL <Enter>

JMP 100 <Enter>

После ввода программы нажмите <Enter> еще раз для выхода из команды А. Это нажатие <Enter> указывает DEBUG, что вы больше не собираетесь вводить символьные инструкции. По завершении ввода DEBUG показывает адрес каждой введенной инструкции:

xxxx:0100 MOV CL,42

хххх:0102 MOV DL,2A

хххх:0104 ADD CL,DL

хххх:0106 JMP 100

хххх:0108

Перед выполнением программы воспользуйтесь командой U (Unassemble – дизассемблировать) для просмотра созданного DEBUG машинного кода.

2.2.18.2. Команда u

Команда U выводит на дисплей машинный код, соответствующий введенным символьным инструкциям. Можно использовать эту команду для указания первой и последней инструкций, которые нужно просмотреть, т.е. в данном случае это 0100Н и 0107Н. Введите команду

U 100,107 <Enter>

На экран будут выведены колонки адресов, машинных и символьных кодов, выглядящие приблизительно следующим образом:

xxxx:0100 B142 MOV CL,42

хххх:0102 В22А MDV DL,2A

хххх:0104 00D1 ADD CL,DL

хххх:0106 EBF8 JMP 100

хххх:0108

Теперь отследите выполнение машинного кода введенной программы. Начните с ввода команды R для просмотра содержимого регистров (IР должен содержать значение 0100Н) и следующей выполняемой инструкции (MOV CL,42). Затем последовательно вводите команды Т для выполнения инструкций. Когда дойдете до JMP 100, IР должен содержать 0106Н, a CL – 6СН.

2.2.19.Использование инструкции int

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

2.2.20. Получение текущих значений даты и времени

Инструкция для получения текущих значений даты и времени – INT 21H, с кодом функции 2АН. Снова введите в DEBUG команду А 100, а затем - следующие инструкции:

M0V АН,2А <Enter>

INT 21 <Enter>

JMP 100 <Enter>, <Enter>

Введите R для просмотра регистров и Т для выполнения инструкции MOV. После этого введите Р для выполнения подпрограммы обработчика прерываний; выполнение остановится на инструкции JMP. Регистры будут содержать в шестнадцатеричной форме следующую информацию:

AL: день недели, где 0 = воскресенье

СХ: год (например, 07D7H = 2007)

DH: месяц (от 01Н до 0СН)

DL: день месяца (от 01H до 1FH)

Операция для получения текущего времени – INT 21H с кодом функции 2СН. Сначала используйте команду R IP для установки IP в 0100Н, а затем введите следующие команды:

А 100 <Enter>

MOV АН,2С <Enter>

INT 21 <Enter>

JMP 100 <Enter>

Выполните программу так же, как и предыдущую. Операция помещает число часов в СН (в 24-часовом формате, где 00 – полночь), минуты – в CL, секунды – в DH и сотые доли секунды – в DL.

Соседние файлы в предмете Системное программное обеспечение