В ходе работы выполнить:
Задание 1. Загрузить отладчик Debug. Для этого найти модуль debug.exe и запустить его. Признаком готовности
отладчика к работе является символ “
- “ и мигающий курсор за ним в начале
строки.
Варианты загрузок:
а) Windows XP, 7 - ПУСК,Выполнить, debug (Windows 8 8.1 - установить DOSBox0.74-win32-installer.exe в режиме совместимости и на диск С: отладчик DEBUG)
б) Linux - c рабочего стола загрузить DOSBox и ввести
Задание 2. Выполнить инструкцию R. Изучить формат, в котором выдается содержимое регистров. Обратить внимание на разрядность. Выполнить инструкцию R для чтения данных из одного регистра (по указанию преподавателя). Записать новые данные в регистр (год рождения или шифр).
Задание 3. Выполнить инструкцию D c различными вариантами ее параметров. Изучить формат выдачи результатов ее выполнения.
Эта команда выводит содержимое указанной области памяти на экран. Следующие три примера используют команду D для просмотра одного и того же участка памяти, начинающегося со смещения ЗС1H в сегменте кода (CS):
D CS:3C1 (команда набрана заглавными буквами с пробелом);
DCS:3C1 ( команда набрана заглавными буквами без пробела);
dcs:3cl (команда набрана строчными буквами без пробела);
В результате выполнения команды получается восемь строк. В левой части каждой из них будет указан адрес первого слева показанного байта в форме сегмент: смещение. Основную часть строки, в центре, занимает шестнадцате ричное представление параграфа, начинающегося с указанного в начале строки байта. Справа на экран выведены в ASCII-форме символы этого параграфа, которые можно вывести на экран, для облегчения интерпретации шестнадцатеричной записи.
Команда D выводит 8 строк данных, в каждой из которых по 16 байт (32 шест надцатеричных разряда), всего – 128 байт, начиная с указанного адреса.
Адрес слева относится только к первому байту в строке, адреса после дующих байтов могут быть легко найдены простым счетом: например, если адрес первого байта – 0159:0240Н, то одиннадцатый байт в строке имеет адрес 0159:024АН. Шестнадцатеричное представление содержит два знака для каждого байта, байты разделяются пробелами для улучшения читаемости. Кроме того, восьмой и девятый байты разделяет дефис. Поэтому, например, если требуется найти байт со смещением хх13Н, начните с байта хх10Н и найдите третий после него байт.
Команда D также показывает содержимое регистров и состояние флагов в регистре Flags.
Упражнение 1: просмотр области данных BIOS
Первое упражнение показывает содержимое области данных BIOS в памяти, на чиная с адреса 400Н или, более точно, с адреса сегмента 40[0]Н. BIOS инициа лизирует значения в этой области памяти при включении компьютера и меняет их в ходе выполнения программ.
Просматривайте эти значения при помощи адреса из двух частей: в качестве адреса сегмента (то есть 400, с отброшенным младшим разрядом), и nn в качестве смещения от начала сегмента. Воспринимайте адрес 40:nn как сегмент 40[0]Н плюс смещение nnН.
Проверка параллельных и последовательных портов
Первые 16 байт области данных BIOS содержат адреса параллельных и после довательных портов. Введите следующую команду:
D 40:00 (и нажмите <Enter>)
Первые четыре выведенных слова указывают на адреса портов от СОМ1 до COM4. Если на компьютере два последовательных порта, первые два слова, вероятно, содержат F803 и F802 в обращенной (с переставленными бай тами) последовательности. Последовательные порты имеют адреса 03F8 и 02F8. Следующие 4 слова указывают на параллельные порты от LPT1 до LPT4. Для системы с одним параллельным портом первое слово, вероятно, содержит 7803, т.е. адрес порта – 0378.
Проверка оборудования системы (результат запишите в отчет)
Слово состояния оборудования в области данных BIOS предлагает базовую информацию о присутствующих в системе устройствах. Это слово, расположенное по адресу 410Н - 411Н, можно просмотреть командой
D 40:10 (и нажмите <Enter>)
Выведенные строки должны начинаться так:
0040:0010 хх хх ...
Допустим, что слово содержит 23 44 в шестнадцатеричной форме. Чтобы интерпретировать его, переставим байты (44 23) и преобразуем в двоичную форму:
Двоичное значение : 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1
Позиция бита: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Эти биты означают:
Неописанные биты не используются .
Проверка состояния регистра клавиатуры (клавиша Shift)
В области данных BIOS по адресу 417Н хранится первый байт состояния регистра клавиатуры. Убедитесь, что Num Lock и Caps Lock выключены, и просмотрите содержимое байта по этому адресу командой D 40:17.
Результат будет похож на
0040:0017 00 00 ...
Проверка состояния видеоустройства
В области данных BIOS по адресу 449Н находится первая область видео данных (Video Data Area). Введите команду D 40:49. Первый показанный байт указывает на текущий видеорежим (например, 03 - цветной), а второй – число столбцов на экране (например, 50 означает режим с 80 столбцами). Число строк хранится по адресу 40:84Н.
Упражнение 2: Просмотр ROM BIOS
Сведения об авторском праве BIOS системы встроены в ROM BIOS no адресу FE00:0. В зависимости от производителя компьютера будут выведены различные строки, после которых будет указан семизначный серийный номер. Строка, указывающая на авторство BIOS, легко читается в виде ASCII-после довательности, а серийный номер – в виде шестнадцатеричного числа. Строка с ук азанием авторских прав может быть длиннее, чем показанный участок памяти; в этом случае для просмотра не показанной части снова введите D и нажмите <Enter>.
Проверка даты производства BIOS (результат запишите в отчет)
Пользуясь командой D по адресу F000:FFF0 найдите и запишите в тетрадь дату прошивки BIOS Вашей машины/ Знание этой даты полезно при опре делении возраста и модели компьютера.
Используя команду D, вы можете просмотреть содержимое любой области памяти. Можно также последовательно просматривать память, просто повторно вводя D – DEBUG будет выводить 128 байт, следующих за последними просмотренными.
Задание 4. Выполнить инструкцию Е для ввода цифровой и символьной информации. При вводе цифровых данных байты данных необходимо разделять пробелами, а символьную строку заключать в апострофы. Правильность ввода проверить, выполнив инструкцию D. Убедиться в том, что при вводе, как шестнадцатеричного числа, так и соответствующего ему символа (например, числа 52 и символа R) в память заносится одна и та же информация.
Опробуйте работу команды Е . Изменение содеpжимого ячеек памяти:
а) пpосмотpите содеpжимое нескольких ячеек памяти, начиная с адpеса 300Н.
б) измените содеpжимое пеpвых 10 ячеек памяти, начиная с адpеса 300Н, записывая пpоизвольные числа.
Напpимеp:
Е300 АА 12 00 72 ВС 1F 54 6D 72 15
в) пpовеpьте коppектное выполнение команды Е.
Задание 5. Выполнить инструкцию F для заполнения памяти по заданному образцу (цифровому или символьному). Правильность заполнения памяти проверить, выполнив инструкцию D.
Заполнение области памяти пpоизвольными числами (команда F)
a) заполните область памяти, начинающуюся с адpеса 300, нулями общим числом 1024.
F300 L400 00
и пpовеpьте коppектное выполнение пpедыдущей команды с помощью команды
D 300 L400.
б) заполните отpезок памяти длиной 4096 байт (1000Н) повтоpяющейся паpой байтов 00 FF, начиная с адpеса DS:500.
F 500 L1000 00 FF
в) заполните область памяти, являющуюся текстовым дисплейным буфеpом :
F B800:0000 L1000 41 05 41 15 41 85
Результат будет немедленно виден на экpане
Задание 6. Выполнить инструкцию S. В качестве «образца» использовать данные, записанные при выполнении задания 4.
Задание 7. Записать в память число 00 С3. (Этот код можно рассматривать как данные или как машинную команду сложения младших байтов регистров AX и BX). В регистры AX и BX записать произвольные числа. С помощью отладчика выполнить операцию сложения; для этого необходимо указать либо полный адрес команды (CS:IP), либо в счетчик команд (IP) загрузить смещение. Убедиться в правильности выполнения операции сложения по содержимому регистров AX и BX. Обратить внимание на формат результата после выполнения инструкции G.