- •Оглавление
- •Описание лабораторных работ
- •Работа с файлами в среде debug
- •Работа с ячейками памяти посредством debug
- •Завершить работу с отладчиком и вернуться в Windows;
- •Выключить компьютер;
- •Оформить отчет и защитить работу.
- •Работа с системной областью rom bios в оперативной памяти
- •Выключить компьютер.
- •Ответить на контрольные вопросы;
- •Выключить компьютер.
- •Работа с программами
- •Выключить компьютер.
- •Работа с видеопамятью
- •Выключить компьютер.
Работа с ячейками памяти посредством debug
Цели работы:
-
научиться с помощью команд DEBUG просматривать в памяти содержимое файла в машинных кодах, изменять их, копировать в другую область памяти;
-
научиться связывать длину файла и положение его содержимого в памяти с состоянием регистров процессора.
Задание и порядок выполнения работы
При подготовке к работе необходимо:
-
просмотреть указанное ниже задание к данной работе и контрольные вопросы, после чего найти соответствующие теоретические положения в разделах 1, 2 настоящего пособия, а также в материалах курса "Элементы и узлы персональных компьютеров", и изучить их;
-
ответить на контрольные вопросы;
-
в тетради для лабораторных работ заготовить отчет по лабораторной работе, в который предварительно занести название и цели работы, требуемые для выполнения теоретические данные, записи команд и последовательность действий в соответствии с заданием.
В лаборатории:
-
по указанию преподавателя включить компьютер и загрузить операционную систему Windows;
-
запустить отладчик DEBUG;
-
скопировать содержимое файла file2.txt из памяти в память, начинающуюся с адреса CS:0200;
-
вывести дамп памяти с копией файла на экран и проверить правильность копирования;
-
используя команду шестнадцатеричной арифметики (Н), найти как разность конечного и начального адресов объем памяти, занимаемый двумя последними строками файла file2.txt;
-
сравнить между собой блок памяти от 100h до конечного адреса памяти, занимаемой файлом file2.txt, с блоком памяти от 200h и такой же длиной;
-
проделать п.6, увеличивая конечный адрес, допустим на 2 байта. Результат выполнения команды сравнения записать в отчет;
-
ввести команду поиска в памяти с файлом file2.txt начальных адресов цепочек байт, кодирующих слово DEVICE (последовательность шестнадцатеричных кодов ASCII соответственно – 44 45 56 49 43 45), либо слово device (последовательность кодов – 64 65 76 69 63 65). Результат записать в тетрадь и сверить с дампом.
Внимание! Слово в файле может быть записано как Device, либо, например, как dEVIce. Как в этих случаях будут выглядеть последовательности кодов?
-
С помощью команды Е - (Enter) заменить в памяти файла file2.txt прописную d на заглавную. Результат проверить с помощью команды вывода дампа памяти.
-
Используйте команду DEBUG F (Fill – заполнить) для вывода на экран 50 звездочек (символов * – код 2АН).
-
Просмотреть содержимое всех регистров;
-
Просмотреть содержимое регистра IP и установить его в 0100Н;
-
Просмотреть данные, хранящиеся в памяти, начиная со смещения 2ВСН в сегменте данных;
-
Дизассемблировать символьный код по адресам от 100Н до 12ВН;
-
Ввести 44 55 4D 50Н в сегмент данных, начиная с адреса 18АН;
-
Проверить эту область памяти.
-
Все выполняемые команды занести в тетрадь.
-
Завершить работу с отладчиком и вернуться в Windows;
-
Выключить компьютер;
-
Оформить отчет и защитить работу.
Методические указания
-
Dump не может выводить данные, выходящие за границы сегмента. Например, команда -D 0100 L F000 правильная (выводятся байты начиная с DS:0100 до DS:F0FF), а команда -D 9000 L 8000 некорректна (8000h +9000h = 11000h - выходит за границу сегмента). Так как 64К - это 10000h, то невозможно задать этот адрес четырьмя шестнадцатеричными цифрами, поэтому DEBUG использует 0000 для задания 10000h. Чтобы вывести на экран весь сегмент - введите -D 0 L 0.
-
Если при использовании команд сравнения (Compare) участков памяти или поиска байтов (Search) на экране нет никаких данных, то у вас одинаковые участки памяти либо отсутствуют заданные в поиске байты.
Контрольные вопросы
-
Объясните назначение следующих команд DEBUG: А, U, C, H, Q, D, R, Е, F, M?
-
Как вывести на экран содержимое всех регистров?
-
Чем определяется начальный адрес загруженной в память программы?
-
В каких регистрах содержится информация о длине файла?
-
Чем отличается в работе команда изменения байтов E (Enter) от команды заполнения F (Fill)?
-
Как найти цепочку "ABCD" в диапазоне памяти DS:0800 - DS:1000?
ЛАБОРАТОРНАЯ РАБОТА №3
