Здравствуйте, kerenskyaf!
Все перечисленные Вами отладчики при запуске перехватывают вектор 21h. Встраивают свой в конец цепочки отработки.
Почему цепочки? Да практически всегда, если кто-то "вешается" на вектор, то отслеживает не все функции, а только некоторые.
Отработку неинтересных ему отдает предыдущему отработчику прерывания. Так, вплоть до начального, системного вектора.
Когда Вы получаете адрес прерывания и смотрите под отладчиком, Вы получаете адрес самого последнего отработчика, установленного отладчиком.
Поэтому и видите РАЗНЫЕ адреса.
Прочитав четыре байта в таблице векторов, Вы также увидите адрес самого верхнего отработчика. Если читаете Debug-ом, то прочитаете адрес, установленный самим Debug-ом.
Да, когда Вы пытались при помощи Debug-а увидеть что-то по адресу, полученном в том же AFD, то увидели, разумеется, мусор. AFD при выгрузке восстановил старые вектора, которые были до его старта. А иначе, был бы крах ДОС-а
А память, куда был загружен AFD, стала свободной. Смотреть что-либо там после прекращения работы AFD лишено всякого смысла.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен