Повторное выполнение инструкций
Иногда необходимо вручную установить значение в регистре 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!