му режимі перевищення 64Кб ​​викликає виключення GP #) Фактично ЕDХ = цільової адресу, оскільки база сегмента в FS = 0 p>
У захищеному режимі при включеній сторінковій адресації вважати пам'ять цим методом марно, тому що крім основної пам'ять вважатиметься ще й файл підкачки на вінчестері, і в перспективі можна завжди отримувати значення близько 4Гб (залежить від ОС).
Потрібно врахувати один важливий момент: у деяких книгах пишеться, що в якості В«нереальногоВ» сегментного регістра треба використовувати FS або GS, так як інші регістри часто перевантажуються і процесор нібито скидає ліміт у 64Кб ​​після перезавантаження сегментного регістра в реальному режимі. На практиці виявляється зовсім не так. Процесор не використовує поля лімітів в реальному режимі. p align="justify"> Для того щоб уникнути додаткових проблем, наведемо приклад з регістром FS:
. Встановити В«нереальний режимВ».
. Відкрити старші адресні лінії (GateA20).
. Встановити лічильник в 1048576 (1Mb).
. Цикл запису-читання.
. Вивести значення лічильника.
. Закрити вентиль А20.
. Вихід.
Після запуску програми слід трохи почекати, приблизно в 2 рази більше часу, ніж час, за який вважає оперативну пам'ять BIOS при завантаженні.
Існує спосіб багаторазового збільшення швидкості програми. Справа в тому, що даний алгоритм вважає пам'ять з точністю до байта, така точність взагалі кажучи не потрібна, тому що розмір сучасної планки пам'яті не може бути некратні мегабайту, тому можна нарощувати лічильник відразу додаючи до нього значення 1048576, чого можна досягти замінивши в циклі запису-читання команду inc ЕСХ на add ЕСХ, 1048576.
3. HDD
.1 Визначення обсягу
Стандартний IDE контролер, застосовуваний в PC, підтримує 2 каналу, на кожному з яких, може бути 2 пристрої АТА (тобто всього може бути 4 пристрої). Кожен канал має свою власну частину простору введення-виведення. Для першого каналу - lF0h-lF7h для другого - 170h-177h. На даному етапі треба ввести поняття базового порту: загалом, це найкраще пояснити на прикладі:
Адреси портів формуються наступним чином: базовий порт + зсув. Завантаживши в базовий порт значення lFOh або 170h можна більше не думати, про те з яким каналом потрібно працювати, тому що функції портів, наприклад lF3h і 173h збігаються для різних каналів IDE. p align="justify"> Тобто для першого каналу базовим портом є lFOh, для другого - 170h, заванта...