Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > HMA & A20 line


Автор: Zigmund 13.5.2002, 22:48
Люди.

Кто може мне рассказать полностью о нюансах всей бодяги под именем HIMEM.SYS. Общие сведения о HMA мне известны. А вот насчет A20 adress line мне хотелось бы узнать по-подробнее. Как и что енто...

И еще: где-то мельком слышал, мол при установленном HIMEM.SYS with HMA чаcть ДОСа грузится в верхнюю область (в том числе и драйверы). Так?

Расскажите по-подробнее, пожалуйста.
Заранее спасибо.

Автор: Chingachguk 14.5.2002, 12:56
Перед переключением в защищенный режим из реального следует "открыть линию A20":

Код

; Open A20
   mov  al,0d1h
   out  64h,al
   mov  al,0deh
   out  60h,al
;set the processor regim
   mov  eax,cr0  ;get mashine word


Это необходимо только в том случае, если планируется использовать память выше 1 Мегабайта (если значение линейного адреса выйдет за пределы 0FFFFFh, он циклически обернется в 0h).

По возврату из защищенного режима, если планируется корректная работа в real-mode, необходимо закрыть эту линию:

Код

   mov  al,0d1h
   out  64h,al
   mov  al,0ddh
   out  60h,al


Кажется, есть у BIOS даже какой-то сервис по этому поводу, да и у DPMI тоже, вроде. Инфа выше взята из книги Финогенова "Программируем на языке ассемблера".

Автор: Chingachguk 14.5.2002, 13:02
Что же касаемо HMA, то вот инфа из книги Зубкова С.В.:

Цитата

"...Обычно, если загружен драйвер HIMEM, и если в файле CONFIG.SYS присутствует строка DOS = HIGH, DOS занимает эту область, осовобождая почти 64 кил в основной памяти. Дос может оставить небольшой участок памяти в HMA(16K or less) для пользовательских программ, которые обращаются к ней с помощью недокументированной ф-ции мультиплексора 4Ah"...

Автор: Zigmund 14.5.2002, 20:26
Боагобдарю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)