Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Описание лабораторных 1_6.doc
Скачиваний:
6
Добавлен:
19.11.2018
Размер:
192.51 Кб
Скачать

Работа с ячейками памяти посредством debug

Цели работы:

  • научиться с помощью команд DEBUG просматривать в памяти содержимое файла в машинных кодах, изменять их, копировать в другую область памяти;

  • научиться связывать длину файла и положение его содержимого в памяти с состоянием регистров процессора.

Задание и порядок выполнения работы

При подготовке к работе необходимо:

  1. просмотреть указанное ниже задание к данной работе и контрольные вопросы, после чего найти соответствующие теоретические положения в разделах 1, 2 настоящего пособия, а также в материалах курса "Элементы и узлы персональных компьютеров", и изучить их;

  2. ответить на контрольные вопросы;

  3. в тетради для лабораторных работ заготовить отчет по лабораторной работе, в который предварительно занести название и цели работы, требуемые для выполнения теоретические данные, записи команд и последователь­ность действий в соответствии с заданием.

В лаборатории:

  1. по указанию преподавателя включить компьютер и загрузить операционную систему Windows;

  2. запустить отладчик DEBUG;

  3. скопировать содержимое файла file2.txt из памяти в память, начинающуюся с адреса CS:0200;

  4. вывести дамп памяти с копией файла на экран и проверить правильность копирования;

  5. используя команду шестнадцатеричной арифметики (Н), найти как разность конечного и начального адресов объем памяти, занимаемый двумя последними строками файла file2.txt;

  6. сравнить между собой блок памяти от 100h до конечного адреса памяти, занимаемой файлом file2.txt, с блоком памяти от 200h и такой же длиной;

  7. проделать п.6, увеличивая конечный адрес, допустим на 2 байта. Результат выполнения команды сравнения записать в отчет;

  8. ввести команду поиска в памяти с файлом file2.txt начальных адресов цепочек байт, кодирующих слово DEVICE (последовательность шестнадцатеричных кодов ASCII соответственно – 44 45 56 49 43 45), либо слово device (последовательность кодов – 64 65 76 69 63 65). Результат записать в тетрадь и сверить с дампом.

Внимание! Слово в файле может быть записано как Device, либо, например, как dEVIce. Как в этих случаях будут выглядеть последовательности кодов?

  1. С помощью команды Е - (Enter) заменить в памяти файла file2.txt прописную d на заглавную. Результат проверить с помощью команды вывода дампа памяти.

  2. Используйте команду DEBUG F (Fill – заполнить) для вывода на экран 50 звездочек (символов * – код 2АН).

  3. Просмотреть содержимое всех регистров;

  4. Просмотреть содержимое регистра IP и установить его в 0100Н;

  5. Просмотреть данные, хранящиеся в памяти, начиная со смещения 2ВСН в сегменте данных;

  6. Дизассемблировать символьный код по адресам от 100Н до 12ВН;

  7. Ввести 44 55 4D 50Н в сегмент данных, начиная с адреса 18АН;

  8. Проверить эту область памяти.

  9. Все выполняемые команды занести в тетрадь.

  10. Завершить работу с отладчиком и вернуться в Windows;

  11. Выключить компьютер;

  12. Оформить отчет и защитить работу.

Методические указания

  1. 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.

  2. Если при использовании команд сравнения (Compare) участков памяти или поиска байтов (Search) на экране нет никаких данных, то у вас одинаковые участки памяти либо отсутствуют заданные в поиске байты.

Контрольные вопросы

  1. Объясните назначение следующих команд DEBUG: А, U, C, H, Q, D, R, Е, F, M?

  2. Как вывести на экран содержимое всех регистров?

  3. Чем определяется начальный адрес загруженной в память программы?

  4. В каких регистрах содержится информация о длине файла?

  5. Чем отличается в работе команда изменения байтов E (Enter) от команды заполнения F (Fill)?

  6. Как найти цепочку "ABCD" в диапазоне памяти DS:0800 - DS:1000?

ЛАБОРАТОРНАЯ РАБОТА №3