PDA

Просмотр полной версии : AFD PRO



podriezow
07.12.2008, 14:18
У меня следущая проблема. Начал изучать Ассемблер и в книге по которой я учусь (Олег Калашников, "Ассемблер это просто!")
все примеры из книги наглядно показиваются в отладчике AFDPRO. Компилирую на MASM 6.11. Написав и скопилировав програму запускаю ее под
отладчиком,нажимая F1 перемищаюсь по командам и все принцыпе роботает, но как только дохожу к любому прерыванию отладчик
прыгает на не понятные мне аддреса и далее не могу ничего разобрать..явно не моя програма)..Наверное отладик как-то начинает исполнять прерывание..?
но назад в мою програму не возращается сколь б я не нажимал F1. Что делать, ведь не могу дальше увидеть наглядно как роботает моя програма.

Naeel Maqsudov
07.12.2008, 18:45
Прочитайте очень внимательно все что написано про инструкцию INT в упомянутой книге. Как процессор ее исполняет?
INT x;
это переход по вектору нормер X из таблицы векторов прерываний, с запоминанием адреса возврата в стеке. Т.е. вполнен естественно, что отладчик во время обработки прерывания показывает не вашу, а чужую программу (это кусочек операционной систеимы). Онна будет выполняться до инструкции IRET. Которая снимает со стэка адрес возврата и возвращается по нему - т.е. обратно в вашу программу.

Выход - использование точек прерывания.
А также посмотрите в настройках отладчика. Наверняка там есть параметр, сограсно которому INT не отлаживается внутри, а выполняется как-бы за 1 шаг.

alexander.spb
24.03.2009, 15:19
скорее всего, в существующем обработчике существуют вызовы INT1, INT3. Это может быть сделано, например, для защиты от трассировки кода BIOS.

Выход - использовать отладчик, поддерживающий аппаратные точки останова i386, а не AFD.