Повторное выполнение инструкций



Иногда необходимо вручную установить значение в регистре IP. Делается это так.

1. Введите команду R IP для вывода содержимого регистра IP.

2. Введите значение 100 (или адрес другой инструкции), а затем нажмите <Enter>.

Эта процедура возвращает к началу программы (или к инструкции внутри программы), и можно повторно выполнить уже пройденные шаги. Введите команду R (без IP). DEBUG выведет на экран содержимое регистров, флаги и следующую подлежащую выполнению инструкцию. Теперь можно использовать команду Т для повторного выполнения инструкций. Если программа накапливает значения, используйте команду Е для очистки ячеек памяти и команду R для очистки регистров.

Сохранение программы в DEBUG

Можно использовать DEBUG для сохранения программы на диске в двух случаях.

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

2.  Для создания при помощи DEBUG маленькой программы в машинных кодах, которую нужно сохранить.

За детальным объяснением обращайтесь к описанию команды W (write -записать) в приложении 1.

На данном этапе может оказаться полезной команда Н, складывающая и вычитающая шестнадцатеричные числа. Максимальная длина чисел – 4 шестнадцатеричных разряда. Например, введите команду Н 3443 2А2В. Команда выведет сначала сумму (5Е6Е), а затем – разность (0А18).

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

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

Команда 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 машинного кода.

Команда 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Н.


Дата добавления: 2018-04-04; просмотров: 464; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!