то рабочая часть программы помещает
дентная программа должна вызываться с помощью программного преры-
вания, то рабочая часть программы помещает адрес резидентной час-
ти кода в соответствующий вектор прерывания. Если резидентная
программа должна вызываться с помощью оперативной клавиши, то ре-
зидентная часть должна модифицировать обработчик прерывания DOS
для обработки нажатия соответствующих клавиш (клавиши) на клавиа-
туре.
Когда рабочая часть завершает выполнение, она вызывает функ-
цию DOS, которая позволяет части файла .EXE оставаться резидент-
ной в оперативной памяти после завершения выполнения программы
(то есть программа завершила выполнения и осталась резидентной,
отсюда и название таких программ TSR - terminate and stay
resident). Рабочая часть резидентной программы знает размер рези-
дентной части, а также ее адрес в памяти, и передает эту информа-
цию DOS. Операционная системе DOS при этом резервирует специаль-
TDeb 3.0 #3-3 = 85 =
ный блок памяти, но может свободно записывать информацию в неза-
щищенную часть памяти. Таким образом, резидентная часть остается
в памяти, а рабочая часть может быть "затерта".
Тонкость отладки резидентных программ состоит в том, что вы
должны иметь возможность отлаживать и резидентную, и рабочую
часть программы. Когда выполняется файл .EXE, то выполняется
только код рабочей части TSR. Поэтому, когда вы как обычно запус-
каете Турбо отладчик, задав имя файла, вы видите выполнение толь-
ко рабочей части кода программы: то, как он устанавливает рези-
дентную часть и обработчики прерываний. Чтобы отлаживать рези-
дентную часть, вы должны задать точку останова и сделать
резидентным сам Турбо отладчик. Подробнее мы расскажем об этом
дальше.
Отладка резидентной в памяти программы