русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Дата ROM BIOS


Дата добавления: 2015-06-12; просмотров: 1171; Нарушение авторских прав


Дата ROM BIOS в формате mm/dd/yy находится по шест. адресу FFFF5. Введите

D FFFF:05 (и нажмите Enter)

Знание этой информации (даты) иногда бывает полезным для определения модели и возраста компьютера. Теперь, поскольку вы знаете, как пользоваться командой D (Display), можно устанавливать адрес любой ячейки памяти для просмотра содержимого.

Можно также пролистывать память, периодически нажимая клавишу D, — DEBUG выведет на экран адреса, следующие за последней командой.

Для окончания работы и выхода из отладчика в DOS введите команду Q (Quit). Рассмотрим теперь использование отладчика DEBUG для непосредственного ввода программ в память и трассировки их выполнения.

Машинные команды имеют различную длину: один, два или три байта. Машинные команды находятся в памяти непосредственно друг за другом. Выполнение программы начинается с первой команды и далее последовательно выполняются остальные.

Можно ввести программу непосредственно в память машины и выполнить ее покомандно. В тоже время можно просматривать cодержимое регистров после выполнения каждой команды. После загрузки DEBUG на экране высвечивается приглашение к вводу команд в виде дефиса.

Для непосредственного ввода программы на машинном языке введите следующую команду, включая пробелы:

E CS:100 B8 23 01 05 25 00 (нажмите Enter)

Команда E обозначает Enter(ввод). CS:100 определяет адрес памяти, куда будут вводиться команды, — шест.100 (256) байт от начала сегмента кодов. (Обычный стартовый адрес для машинных кодов в отладчике DEBUG).

Команда E записывает каждую пару шестнадцатеричных цифр в память в виде байта, начиная с адреса CS:100 до адреса CS:105.

Следующая команда Enter:

E CS:106 8B D8 03 D8 8B CB (Enter)

вводит шесть байтов в ячейки, начиная с адреса CS:106 и далее в 107, 108, 109, 10A и 10B. Последняя команда Enter:



E CS:10C 2B C8 2B C0 90 CB (Enter)

вводит шесть байтов, начиная с CS:10C в 10D, 10E, 10F, 110 и 111.

Проверьте правильность ввода значений. В случае, если есть ошибки, то следует повторить команды, которые были введены неправильно.

Теперь осталось самое простое — выполнить эти команды.

Введите команду R для просмотра содержимого регистров и флагов. В данный момент отладчик покажет содержимое регистров в шест. формате, например, AX=0000, BX=0000,...

Содержимое регистра IP (указатель команд) выводится в виде IP=0100, показывая что выполняемая команда находится на смещении 100 байт от начала сегмента кодов. Регистр флагов показывает следующие значения флагов:

NV UP DI PL NZ NA PO NC

Данные значения соответствуют:

u NV —нет переполнения

u UP — правое направление

u DI — прерывания запрещены

u PL — знак плюс

u NZ — не ноль

u NA — нет внешнего переноса

u PO — контроль на честность

u NC — нет переноса.

Команда R показывает также по смещению 0100 первую выполняемую машинную команду.

MOV AX,0123 — ассемблерный мнемонический код, соответствующий введенной машинной команде. Это есть результат операции дизассемблирования, которую обеспечивает отладчик для более простого понимания машинных команд. Рассматриваемая в данном случае команда обозначает пересылку непосредственного значения в регистр AX.

В данный момент команда MOV еще не выполнена. Для ее выполнения нажмите клавишу T (для трассировки) и клавишу Enter. В результате команда MOV будет выполнена и отладчик выдаст на экран содержимое регистров, флаги, а также следующую на очереди команду. Заметим, что регистр AX теперь содержит 0123. Машинная команда пересылки в регистр AX имеет код B8 и за этим кодом следует непосредственные данные 2301. В ходе выполнения команда B8 пересылает значение 23 в младшую часть регистра AX, то есть, однобайтовый регистр AL, а значение 01 — в старшую часть регистра AX, то есть, в регистр AH:

AX: | 01 | 23 |

Содержимое регистра IP:0103 показывает адрес следующей выполняемой команды в сегменте кодов:

13C6:0103 052500 ADD AX,0025

Для выполнения данной команды снова введите T. Команда прибавит 25 к младшей (AL) части регистра AX и 00 к старшей (AH) части регистра AX, то есть, прибавит 0025 к регистру AX. Теперь регистр AX содержит 0148, а регистр IP 0106 — адрес cледующей команды для выполнения.

Введите снова команду T. Следующая машинная команда пересылает содержимое регистра AX в регистр BX и после ее выполнения в регистре BX будет содержаться значение 0148. Регистр AX сохраняeт прежнее значение 0148, поскольку командаMOV только копиpует данные из одного места в другое. Теперь вводите команду T для пошагового выполнения каждой оставшейся в программе команды. Следующая команда прибавит cодержимое регистра AX к содержимому регистраBX, в последнем получим 0290. Затем программа скопирует содержимое pегистра BX в CX, вычтет AX изCX, и вычтет AX из него самого. После этой последней команды, флаг нуля изменит свое состояние c NZ(не нуль) на ZR (нуль), так как результатом этой команды является нуль (вычитание AXиз самого себя очищает этот регистр в 0).

Можно ввести T для выполнения последних команд NOP и RET, но это мы сделаем позже. Для просмотра программы в машинных кодах в сегменте кодов введите D для дампа:

D CS:100

В результате отладчик выдаст на каждую строку экрана по 16 байт данных в шест. представлении (32 шест. цифры) и в символьном представлении в коде ASCII (один символ на каждую пару шест. цифр). Представление машинного кода в символах ASCII не имеет смысла и может быть игнорировано.

Первая строка дампа начинается с 00 и представляет содержимое ячеек от CS:100 до CS:10F. Вторая строка представляет cодержимое ячеек от CS:110 до CS:11F. Несмотря на то, что ваша программа заканчивается по адресу CS:111, команда Dumpaвтоматически выдаст на восьми строках экрана дамп с адреса CS:100 до адреса CS:170.

При необходимости повторить выполнение этих команд сбросьте содержимое регистра IP и повторите трассировку снова. Введите R IP, введите 100, а затем необходимое число команд T. После каждой команды нажимайте клавишу Enter.

Для завершения работы с программой DEBUG введите Q (Quit — выход). В результате произойдет возврат в DOS и на экране появится приглашение A> или C>. В случае, если печатался протокол работы с отладчиком, то для прекращения печати cнова нажмите Ctrl/PrtSc.



<== предыдущая лекция | следующая лекция ==>
Функции загрузки и выполнения программы | Машинная адресация


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.