Lavr wrote:Lavr wrote:А вот дальше и происходит то, о чём я уже писал тут: этот вызов можно пройти пошагово
и ошибки Machine Check Error не случается.
А вот если уже успешно пройденные участки запускать "до метки" то машина падает с ошибкой!
В
пошаговой отладке "
Trace" используется аппаратный режим трассировки микропроцессора 8086.
(
INT 01 — исключение #DB «Отладочное прерывание»)
Пришла мне напоследок совсем шаловливая мысль:
Если пошаговое прохождение не вызывает
ошибки, то, может быть, запустить всю программу под постоянным контролем каждого кода под
пошаговым прерыванием INT 01,
которое я перехватываю в собственный "костылик"?
Получилось неплохо, хотя и
INT 03 пришлось задействовать: первый байт программы меняется
на 0CCH, в перехваченном мной
INT 03 байт 0CCH заменяется на нормальный первый байт,
IP откатывается на шаг назад, после чего взводится флаг
INT 01 и программа запускается
сначала, но уже под контролем
INT 01.
К сожалению, результат был всё тот же:
Machine Check Error.
По пути выяснил, что программу можно неплохо замедлить, если внутри
INT 01 вставить циклы
задержки...
Это тоже не помогло, хотя и медленно было видно, как программа стартует, входит в свой графический
режим 640х350х16 и тут уже падает с
Machine Check Error крупным шрифтом...
Наткнулся я на форум Паскалистов
А как у AMD с паскалевскими программами для DOS?,
где посетители пишут, что некоторые Паскалевские программы перестают падать при замедлении.
Так что если кто захочет замедлить свою программу через
INT 01, выкладываю здесь код:
SPMX_INT1.zip
Код грязноватый, так как я адаптировал одну свою старую программу, взятую с этого форума.
Но разобраться можно, я думаю, если понадобится.
Сам я, возможно, её как-нибудь доделаю в простой отладчик с выводом информации в одну верхнюю
строчку - такой фокус есть в "Специалист_МХ", и здесь мне его очень не хватало...
You do not have the required permissions to view the files attached to this post.