- •Министерство труда, занятости и трудовых ресурсов Новосибирской области
- •Разработал: а.А.Холин
- •1. Цели:
- •2 Оборудование, аппаратура, материалы, инструменты, документация.
- •3 Форма организации.
- •4 Инструктаж.
- •5 Порядок выполнения.
- •6. Методические рекомендации.
- •5.7 Ассемблирование и дизассемблирование.
- •5.8 Создание программы на ассемблере и сохранение ее на диске.
- •Просмотр областей памяти
- •Полезные приемы с командой d
- •Непосредственный ввод программы в память с помощью debug.Exe
- •Ассемблирование и дизассемблирование
- •7. Форма отчета.
- •8. Контрольные вопросы.
- •9. Критерии оценки.
Просмотр областей памяти
Команда D, позволяет просматривать содержимое отдельных областей памяти. Этот пример использует команду D для просмотра области памяти, начиная с 0159:0240:
-d 0159:0240
0159:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ..........l.....
0159:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0159:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0159:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0159:0280 00 00 00 00 00 00 00 00-00 FF FF FF FF 00 00 00 ................
0159:0290 FF 00 00 00 00 00 00 00-00 00 4E 4F 20 4E 41 4D ..........NO NAM
0159:02A0 45 20 20 20 20 00 26 81-4F 03 00 01 CB 00 00 00 E .&.O.......
0159:02B0 00 00 00 00 00 00 00 00-00 00 00 01 07 04 FF 02 ................
-_
Здесь на запрос просмотра участка памяти получены восемь строк, в которых указано содержимое выбранной области памяти. Каждая строка состоит из трех частей:
Адрес первого слева показанного байта в формате сегмент:смещение.
Шестнадцатеричное представление параграфа (16 байт), начинающегося с указанного в начале строки байта.
Символы этого же параграфа в ASCII-формате.
Адрес, указанный в строке, относится исключительно к первому байту в параграфе, а адреса последующих байтов следует вычислять самостоятельно. Шестнадцатеричное представление содержит по два знака в каждом байте, а сами байты разделены пробелами для облегчения чтения. Кроме того, следует отметить, что восьмой и девятый байты разделены дефисом, разделяя тем самым параграф на две части и облегяая вычисление адресов байтов в параграфе.
Полезные приемы с командой d
Проверка параллельных и последовательных портов Первые 16 байт области данных BIOS содержат адреса параллельных и последовательных портов. Поэтому с помощью следующей команды можно проверить эти порты:
-D 40:00_
Первые выведенные восемь байтов указывают на адреса последовательных портов COM1-COM4. Следующие 8 байтов указывают на адреса параллельных портов LPT1-LPT4. Например, если на вашем компьютере есть один параллельный порт, то первые два байта будут, скорее всего, такими: 7803. Адрес порта записывается в обращенной последовательности, т.е. 0378. Проверка оборудования Первые два байта, располагающиеся в BIOS по адресу 410h, содержат информацию об установленном в системе оборудовании. Находим эти байты командой:
-D 40:10_
Предположим, что первые два байта окажутся 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 |
Что означают эти биты? Продолжаем расшифровывать:
Биты |
Устройство |
15, 14 |
Число параллельных портов (01 = 1 порт, ...) |
11, 10, 9 |
Число последовательных портов (..., 010 = 2 порта, ...) |
7, 6 |
Число дисководов (00 = 1 дисковод, 01 = 2, 10 = 3, 11 = 4) |
5, 4 |
Начальный видеорежим (01 = 40х25 цветной, 10 = 80х25 цветной, 11 = 80х25 монохромный) |
1 |
Присутствие математического сопроцессора (0 = нет, 1 = есть) |
0 |
Наличие привода для дискет (0 = нет, 1 = есть) |
Проверка состояния регистра клавиатуры В области данных BIOS по адресу 417h находится первый байт, который хранит состояние регистра клавиатуры. Выключаем Num Lock и Caps Lock, затем набираем команду:
-d 40:17_
Первый байт будет равен 00. Включив Num Lock и Caps Lock, снова выполняем команду. Теперь первый байт должен равняться 60. Опытным путем установлено, что при включенном Num Lock первый байт равен 20, а при Caps Lock - 40. Проверка состояния видеосистемы По адресу 449h в BIOS находится первая область видеоданных. Для проверки набираем:
-d 40:49_
Первый байт показывает текущий видеорежим (к примеру, 03 - цветной), а второй - число столбцов (например, 50 - режим с 80 столбцами). Число строк можно найти по адресв 484h (40:84). Проверка копирайта BIOS и серийного номера Сведения об авторских правах на BIOS встроены в ROM BIOS по адресу FE00:0. Строку с копирайтом можно легко найти в ASCII-последовательности, а серийный номер - в виде шестнадцатеричного числа. Хотя, строка с указанием авторских прав может быть длинной и не умещаться в выведенную область памяти. В таком случае следует просто ввести еще раз D. Проверка даты произвоства BIOS Эта дата также записана в ROM BIOS начиная с адреса FFFF:5. После выполнения соответствующей команды в ASCII-последовательности будет находиться эта дата, записанная в формате мм/дд/гг. Пример:
-d FFFF:5
FFFF:0000 31 31 2F-32 38 2F 30 35 00 FC 00 11/28/05...
FFFF:0010 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
...
-_
