AFD PRO

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
podriezow
Сообщения: 1
Зарегистрирован: 26 ноя 2008, 18:46

07 дек 2008, 14:18

У меня следущая проблема. Начал изучать Ассемблер и в книге по которой я учусь (Олег Калашников, "Ассемблер это просто!")
все примеры из книги наглядно показиваются в отладчике AFDPRO. Компилирую на MASM 6.11. Написав и скопилировав програму запускаю ее под
отладчиком,нажимая F1 перемищаюсь по командам и все принцыпе роботает, но как только дохожу к любому прерыванию отладчик
прыгает на не понятные мне аддреса и далее не могу ничего разобрать..явно не моя програма)..Наверное отладик как-то начинает исполнять прерывание..?
но назад в мою програму не возращается сколь б я не нажимал F1. Что делать, ведь не могу дальше увидеть наглядно как роботает моя програма.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

07 дек 2008, 18:45

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

Выход - использование точек прерывания.
А также посмотрите в настройках отладчика. Наверняка там есть параметр, сограсно которому INT не отлаживается внутри, а выполняется как-бы за 1 шаг.
alexander.spb
Сообщения: 22
Зарегистрирован: 24 мар 2009, 13:25
Откуда: St.Petersburg

24 мар 2009, 15:19

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

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