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

Практическая работа №7-8
Работа в Debug. Использование оператора PTR

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

Пояснения к работе
В программе debug имеется возможность перемещать и складывать данные в регистрах и ячейках памяти. В предыдущих примерах (Лабораторные работы №3 -6), помещавших данные в регистр, debug мог определить, исходя из типа регистра (AL или AX, например), сколько байтов было необходимо переместить. Приведенная ниже программа помещает непосредственные данные в память. Поскольку инструкция вроде mov [120],25 не указывает количество байт, для этой цели можно использовать оператор PTR.
Инструкция программы:
100 MOV AX, [11A]
103 ADD AX, [11C]
107 ADD AX, 25
10A MOV [11E], AX
10D MOV WORD PTR [120], 25
MOV BYTE PTR [122], 30
118 JMP 100
11A DB 14 23
11C DB 05 00
11E DB 00 00
120 DB 00 00 00
Описание инструкций:
100: Поместить содержимое ячеек памяти 11АН и 11ВН в АХ. Квадратные скобки указывают на то, что операнд – адрес в памяти, а не непосредственное значение.
103: Добавить содержимое ячеек памяти 11СН и 11ВН к АХ.
107: Добавить непосредственное значение 25Н к АХ.
10А: Поместить содержимое регистра АХ в ячейки памяти с адресами 11ЕН и 11АН.
10D: Поместить непосредственное значение 25Н в ячейки памяти 120Н и 121Н. обратите внимание на использование оператора WORD PTR, указывающего debug, что значение 25Н должно быть помещено в слово в памяти. Если бы вы просто записали данную инструкцию в виде MOV [120], 25, debug не смогла бы определить, какая длина выделенного участка памяти подразумевалась, и вывела бы сообщение об ошибке.
113: Поместить непосредственное значение 30Н в ячейку памяти по адресу 122Н. на этот раз используется оператор BYTE PTR для указания длины в 1 байт.
11А: Определить значение байт 14Н и 23Н. DB определяет байты для элементов данных, на которые инструкция (например, первая) ссылается.
11С, 11Е и 120: Определить другие значения, используемые в программе.
Для ввода этой программы сначала введите команду debug А 100, а затем последовательно введите все инструкции (но не адреса, с которых начинаются строки). В конце еще раз нажмите клавишу для завершения ввода. Для выполнения программы сначала воспользуйтесь командой R для просмотра состояния регистров и первой инструкции, а затем используйте последовательность команд T. Остановите выполнение, когда вы доберетесь до команды JMP 100 по адресу 118Н. командой D просмотрите содержимое области памяти программы и убедитесь, что изменилось содержимое АХ (233Н) и ячеек памяти с адресами 11ЕН-11FН (3Е23), 120Н-121Н (2500) и 122Н (30). Введите T для повторения программы или Q для выхода.

Задания
Задание 1. Запустите программу debug. Наберите программу из теоретического материала. Сохраните на диск. Выполните. Результаты запишите в тетрадь.
Задание 2. Область видеопамяти (Video Display Area) для цветного монитора в текстовом режиме начинается с адреса В800:0000.
Используйте команду debug D для просмотра этой области памяти. Заметьте, что за каждым символом в этой области следует байт атрибутов (07Н для черно-белого режима). Используйте дополнительные команды D для просмотра всей области видеопамяти.
Используйте команду debug F (Fill – заполнить) для вывода на экран 50 звездочек (символ * - код 2АН). Например, следующая команда заполняет всю видеопамять 4000 (FA0H) сердечками (03) и атрибутами (где 16Н соответствует коричневым символам на синем фоне): F B800:0000 LFA0 03 16.
Используйте команду debug F (Fill – заполнить) для вывода на экран 20 единиц любого цвета. Результаты запишите в тетрадь.
Задание 3. Используйте debug для создания и запуска программы, запоминающей три введенных с клавиатуры символа и выводящей их на экран.
Начните с А 100.
Используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [200].
Опять используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [201].
В третий раз используйте INT 16 для помещения символа в AL и скопируйте его из AL в ячейку с адресом [202].
Используйте команду Е 123 $’ для установки ограничителя $ после трех введенных символов.
Наконец, используйте INT 21 для вывода символов.
Запишите программу в тетрадь.

Контрольные вопросы
1. Назначение оператора PTR.
2. В чем отличие команд Т и Р?
3. Как изменить содержимое регистра IP?
4. С помощью какой команды можно дизассемблировать инструкции?




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

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

  • doc prac 7-8
    Размер файла: 38 kB Загрузок: 5