Особое место занимает адресное пространство ввода-вывода, используемое для связи центрального процессора с периферийными устройствами. Подключение периферийного оборудования (клавиатуры, дисплея, дисковых накопителей, принтера, "мыши" и т.д.) и обмен данными с центральным процессором осуществляется через специальные устройства, называемые адаптерами или контроллерами. В состав компьютерной системы входят как специализированные адаптеры (например, видеоадаптер, контроллер прерываний, контроллер дисковода и др.), так и универсальные адаптеры последовательного (COM1...COM4) и параллельного (LPT1...LPT4) каналов, к которым может подключаться различное программно-управляемое оборудование.
Адаптер содержит несколько информационных регистров (как правило, однобайтовых), через которые и происходит обмен данными между процессором и внешним устройством. Множество регистров всех подключенных адаптеров образуют адресное пространство ввода-вывода, доступ к которому со стороны центрального процессора осуществляется по 16-разрядной шине.
Множество всех регистров одного адаптера объединены понятием порт ввода-вывода, первый регистр порта называется базовым регистром, а его адрес в адресном пространстве ввода-вывода называется базовым адресом порта. Базовые адреса установленных портов определяются в процессе начального тестирования системы и записываются в ОЗУ (в область данных BIOS). Обращение к остальным регистрам порта производится по смещению относительно его базового адреса.
Учебные задания
Методические указания
Для исследования информационной структуры адресного пространства ПК необходимо использовать одну из программ – анализаторов памяти - рекомендуется использовать программу Peek Poke resident (файл PEEK.com) или функционально подобную ей программу FX Show (файл FXShow.com). Указанные программы позволяют просматривать на экране содержимое памяти в шестнадцатеричном или символьном форматах, изменять содержимое памяти "вручную" с помощью простого встроенного редактора, а также копировать в дисковый файл экранный образ фрагмента памяти.
Полезно использовать также резидентный калькулятор (CALC.com), позволяющий выполнять арифметические действия над целыми числами в десятичной и шестнадцатеричной системах счисления. После запуска калькулятора его можно активизировать нажатием комбинации клавиш Alt+ScrollLock или непосредственно из программы PEEK нажатием функциональной клавиши F9.
Более подробная информация о структуре служебных областей памяти ПК содержится в электронном справочнике HELP (файлы Help.exe и Help.dat).
Задание 1. Определите линейные адреса базовой памяти, соответствующие следующим адресам, заданным в сегментной форме: 0000:041E h; 0040:001E h; 0000:0408 h; 0000:0408 h. Результаты представьте в шестнадцатеричной и двоичной системах счисления. Поясните алгоритм работы сумматора адреса.
Задание 2. Оцените количество вариантов записи одного линейного адреса в сегментной форме.
Задание 3. Определите содержимое старшего и младшего байтов двухбайтового машинного слова, расположенного по адресу 0000:041E h. Запишите это машинное слово в шестнадцатеричной и двоичной системах счисления. Нажимая (не менее 16 раз) на любую из символьных клавишей клавиатуры, проследите за изменениями этого машинного слова. Какая информация содержится в машинном слове по указанному адресу?
Задание 4. Определите состав параллельных и последовательных адаптеров (LPT* и COM*), установленных в Вашем компьютере, и их базовые адреса. Поясните термины: адресное пространство ввода-вывода, адаптер, порт ввода-вывода, базовый адрес.
Задание 5. Поясните термины: "аппаратное прерывание", "программное прерывание", "внешнее прерывание", "внутреннее прерывание", "номер прерывания", "вектор прерывания", "обработчик прерывания".
Задание 6. Опишите структуру таблицы векторов прерываний и алгоритм определения адреса программы обработки N -го прерывания.
Задание 7. Определите начальные адреса программ обработки прерываний №8, №9, №10h, №16h и №21h. Используя электронный справочник HELP, определите назначение этих программ.
Задание 8. Определите начальный адрес программы обработки прерывания клавиатуры (№9). Выведите на экран карту памяти. Определите, какие из программ загружены в память вашего ПК и какие из прерываний "перехвачены" этими программами.
Задание 9. Определите вектора прерываний №1Fh и № 43h. Используя электронный справочник HELP, определите назначение этих векторов.
Контрольные вопросы
Как влияет разрядность процессора и адресной шины на размер адресного пространства? Определите диапазон линейных адресов для процессоров с 16-, 24- и 32- разрядной адресными шинами.
Какую функцию выполняют сегментные регистры процессора?
Поясните назначение и алгоритм работы сумматора адреса.
Каковы действия DOS при поступлении сигнала аппаратного прерывания в процессе обработки предыдущего прерывания?
Каковы возможные последствия программной модификации байтов данных, расположенных по следующим адресам:
0000:0014 h, 0000:0408 h, 0040:0008 h, 0000:0024 h, С000:FFFF h.
Лабораторная работа № 5
КЛАВИАТУРА ПК
Цель лабораторной работы – исследование алгоритма реализации процесса ввода данных с клавиатуры и информационной структуры области данных BIOS, обеспечивающей этот процесс.