размер памяти который возвращает int 12h находиться по адресу 0000:413h. означает ли это что если я уменьшу это значение то ОС не сможет сможет(не сможет получить ее через прерывания или еще - что то) ? Суть вот в чем, нужно остаться в памяти после загрузки ОС, вот и ищу место где это можно сделать.
INT 12H возвращает AX = число килобайт памяти в PC. Это то же значение, которое хранится в 0:413. Оно не включает переключаемую расширенную память (см. Спецификацию Expanded-памяти ). Оно также не включает "extended-память" с адресами выше 1 мегабайта. См. функции EMM и INT 15H для PC, это значение берется из переключателей. Машины PCjr, XT и большинство им подобных выполняют просмотр памяти во время POST , чтобы определить объем памяти. AT считывает свою CMOS-память , чтобы определить объем RAM. Использовать надо int 15h AH = e820, там правишь таблицу и будет тебе счастье)
Какая ОС? Если ОС реального режима, то возможно. Если ОС защищенного режима, то вероятность меньше, а перехватить управление вообще почти невозможно. Тут есть еще один тонкий момент. Если ОС защищенного режима определяет положение EBDA по вершине доступной базовой памяти, а не по адресу EBDA, хранящемуся в BDA, то маскирование кода в указанном месте может повлиять на работоспособность загружаемой ОС. Короче для ОС защищенного режима это делать рисковано.
Phantom_84 ОС виндовс. Управление планирую получить путем перехвата int 13h и изменения кода. Что это такое ?.. drem1lin Я так понимаю ты имеешь ввиду перехват int 15h ?
устанавливается свой обработчик, который возвращает подложную таблицу. Я таким образом у винды 40 метров отрезал, только тут надо решить задачу хранения нового обработчика и подложной таблицы