Ввод-вывод
- Подробности
-
Родительская категория: Ввод-вывод
-
Категория: Программирование контроллера прерываний i8259А
Для тех пользователей, которые работали с микропроцессорами i8086 или i8088, нет необходимости пояснять особенности этого режима. Относительно недавно это был единственный режим, в котором функционировала популярная операционная система MS-DOS. Для нее был разработан большой объем программного обеспечения. Понимая все это и не желая терять рынок, фирма Intel во всех модернизациях своего микропроцессора поддерживает этот режим. В нашей книге при написании программ мы, до сего момента, также подразумевали реальный режим. Вот некоторые его характеристики:
- пространство оперативной памяти делится на сегменты по 64 Кбайт. Сегменты в памяти могут перекрываться;
- страничное преобразование адреса запрещено, то есть физический адрес равен линейному и формируется как сумма двух составляющих (см. урок 2):
- 16-разрядного эффективного адреса, который, в свою очередь, является суммой трех составляющих: базы, смещения и индекса;
- 20-разрядного результата сдвига содержимого конкретного сегментного регистра на 4 разряда влево;
- максимальное значение физического адреса равно 0ff fffh, то есть 1 Мбайт, но, фактически, в реальном режиме микропроцессора адресуется на 64 Кбайт больше, что следует из следующего вычисления:
- ffff0 — максимальное значение сегментной части адреса, сдвинутое на 4 раз- ряда влево;
- +
- 0ffff — максимальное значение смещения;
- 10ffef = 1 114 096 байт — максимальный физический адрес в реальном режиме.
Этот пример говорит о том, что в модели микропроцессоров, начиная с i286, при определенных обстоятельствах возможна адресация оперативной памяти за пределами первого мегабайта. Это обстоятельство даже использовалось последними версиями MS-DOS для размещения служебных программ в этом дополнительном сегменте памяти. Формирование значений адреса сразу за первым мегабайтом возможно и в микропроцессоре i8088/86. В нем при появлении физического адреса большего 0fffffh, например 1 000 054h, микропроцессор отбрасывает 21-й единичный бит. Происходит так называемое «заворачивание» адреса, поэтому сформированный физический адрес на шине адреса будет равен 00054h. Для того чтобы обеспечить полную эмуляцию данной особенности микропроцессора i8088/86, в моделях микропроцессоров, начиная с i80286, была предусмотрена возможность блокировки адресной линии А20 (управление тем самым 21-м битом адреса). Для обеспечения доступа к адресам оперативной памяти, лежащим за пределами первого мегабайта, необходимо специальным образом открывать эту адресную линию;
- в реальном режиме схема распределения оперативной памяти — фиксированная. Перечислим расположение некоторых из системных областей, которые потребуются нам в дальнейшем:
- в диапазоне адресов 00000h-003ffh (первый мегабайт оперативной памяти) находится таблица векторов прерываний (ТВП). Она содержит 256 векторов прерываний размером 4 байта (указателей на программы обработки прерываний);
- в диапазоне адресов 00400h-006ffh сразу за таблицей векторов прерываний располагается область памяти, содержащая жестко структурированные данные, обеспечивающие работу BIOS и MS-DOS;
- с адреса 0b8000h располагается область видеопамяти, в которой формируется изображение, которое мы видим на экране.