Программа Debug. Изменение содержимого регистров. Команды программы Debug и определение форматов команд
Скачать 109.32 Kb.
|
Практическая работа №1Тема: Программа Debug. Изменение содержимого регистров. Команды программы Debug и определение форматов команд.Цель работы:Знакомство с регистрами процессора через программу Debug, изучение команд программы Debug. Присваивание регистру любого значения. Изменение содержимого регистров процессора.Знакомство с командой Assembler, Unassembled, Display и определение форматов команд. "Копирование" содержимого одного регистра в другой. Ход работы:Задание: Вызов программы Debug. Вызвать программу Debug: для этого в командной строке DOS набрать слово debug. После каждой команды нажимать Enter: Рисунок 1 – Вызвал программу Debug Теория: Команда: -R (Register) –отображает на экране содержимого всех регистров, адрес текущей ячейки, машинный код команды и команду для выполнения. Команда: Rm –отображение на экране содержимого регистра m, где m имя регистра. Задание: Если мы хотим изменить значение одного из регистров, мы вводим R и имя регистра. Давайте поместим в AX слово * CHRT _R AX Рисунок 2 – поместил в AX слово CHRT На экране: AX 0000 : ":" - это приглашение ввести новое значение. Мы отвечаем *CHRT :* CHRT На экране: ^Error Debug выдал сообщение об ошибке, т.к. * CHRT не шестнадцатеричное. Попробуйте ввести D3E0: _R AX AX 0000 :D3E0 Вы увидите, что ничего не изменилось кроме регистра AX. Ему присвоили новое значение. Теория: Еще один важный момент: команда Register может использоваться только для 16-битных регистров (AX, BX и т. д.). Она не может изменять значения 8-битных регистров (AH, AL, BH и т. д.). Например, чтобы изменить AH, вы должны ввести новое значение в регистр AX с новым AH и старым значением AL. Задание: Вывести на экран все регистры. Рисунок 3 – вывел все регистры Запишите содержимое всех регистров. Назовите все отображенные регистры и выучите их: AX - D3E0 умножение, деление и ввод\вывод слов BX- 0000 перекодирование CX- 0000 операции со строками, циклы DX- 0000 умножение и деление слов, неявный ввод\вывод SP- FFEE операция со стеком BP- 0000 SI- 0000 операции со строками DI- 0000 операции со строками DS- 1397 Сегмент данных ES- 1397 сегмент промежуточных данных SS – 1397 сегмент стека CS- 1397 сегмент кода IP- 0100 Назовите регистры общего назначения: D3E0, 0000, 0000, FFEE, 0000, 0000, Укажите адрес текущей ячейки: AX Рисунок 4 – адрес текущей ячейки Рисунок 5 – Присвоил значение регистру С помощью лекций расшифруйте и изучите состояния флагов, определяющих режим работы процессора:
С помощью команды _RF - измените значения флагов на противоположные. Запишите действия: (новые значения флагов вводим через пробел) Рисунок 6 – изменил значения флагов Ввод команд в Ассемблере: Теория: Рисунок 7 – ввел командыасемблер sub – команда целочисленного вычитания. Производит вычитание значений одного операнда из значения другого. mov – назначение: пересылка данных между регистрами или регистрами и памятью. nop – ничего не делает Введите команду U (unassemble), которая преобразовывает программу в машинные коды: U100L9 где 100 адрес первой команды, L9 длина программы, равная количеству байт в программе. Запишите машинные шестнадцатеричные коды команд в ряд: Теория: Введите команду D (dump), которая выводит программу из памяти в машинных кодах: D100L9 где 100 адрес первой команды, L9 длина программы, равная количеству байт в программе. Сравните машинный коды этой программы пункт 12 с пунктом 13. Расшифруйте символики команд, напишите соответствующие им команды на ассемблере: (Смотреть приложение I): Вывод: __________________________________________________________________________________________________________________________________ |