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

В ходе работы выполнить:

Задание 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.