- •Ижевский государственный технический университет
- •6. Оверлей 32
- •8.10. Стандартные библиотеки 52
- •Экзаменационные вопросы 52
- •1. Назначение системного программного обеспечения (спо)
- •Ос и языки программирования
- •2. Обслуживание ввода-вывода
- •2.1. Организация ввода-вывода
- •2.2 Способы управления пу Понятие драйвера пу
- •2.2.1. Синхронный ввод-вывод
- •2.2.2. Асинхронный ввод-вывод
- •2.2.3. Буферный ввод-вывод
- •3. Буферный обмен информацией в языках программирования.
- •4. Управление и доступ к оперативной памяти.
- •4.3. Управление реальной памятью
- •Разделы фиксированной длины
- •Использование разделов переменного размера
- •Использование перемещаемых разделов
- •Защита памяти
- •5. Библиотека dos
- •12. Прерывание 17h – работа с принтером
- •Функция 00h – прочитать время
- •6. Оверлей
- •6.1 Структура программного комплекса
- •6.2. Распределение памяти в оверлейной структуре
- •7. Встроенный в turbo pascal assembler
- •7.2. Режимы адресации в Ассемблере
- •7.4. Выражения для управления памятью
- •7.5.Выражения в Ассемблере
- •7.6. Команды Ассемблера
- •7.6.3. Команды ввода вывода
- •7.6.4. Адресные команды
- •7.6.7. Строковые команды
- •Test Аналогична команде and, но результат операции не записывается в 1 операнд.
- •Установить операнд:
- •8. Язык программирования с.
- •8.10. Стандартные библиотеки
- •Литература
- •Экзаменационные вопросы
- •На тему: название темы
- •Примечание: если курсовая работа выполняется двумя и более студентами, обязательно разбивка задач для каждого студента конкретно.
- •Состав пояснительной записки:
2.2.1. Синхронный ввод-вывод
При синхронном вводе-выводе отсутствует параллелизм между обработкой и передачей информации. Процессор занят в течение всего времени передачи. Хорошим примером может быть печать документов на принтере под управлением ОС с синхронным вводом-выводом. После отправки документа на печать пользователь вынужден ждать окончания обработки своего задания – заниматься во время печати полезной работой он не может.
Синхронный ввод-вывод был стандартным для большинства ОС (например, для MS-DOS), которые работали на компьютерах с низкой производительностью процессора, для которых актуальность параллельной обработки была невелика. Увеличить производительность системы с такой организацией можно достаточно простым способом – снабдить ПУ собственным буфером памяти, в котором могут размещаться данные для вывода или ввода. Например, принтер HP LJ4P оснащен собственной памятью в объеме 2МБ. Передав необходимые для печати данные в эту память, пользовательская программа может продолжать свою работу.
Синхронный ввод и вывод информации можно осуществить использую предопределенные массивы Port и PortW.
Port [<Addr>]- осуществляет связь с портом. Порт имеет абсолютно точный адрес, состоящий из трех шестнадцатеричных цифр. Портом называется специальный адрес, по которому хранится, как правило регистр (входной / выходной) периферийного устройства.
Некоторые порты устроены более сложным образом. В некоторых случаях при обращении к порту происходит обращение к процессору периферийного устройства, который уже интерпретирует данные на выходе для обращения к соответствующему регистру.
Массив Port употребляется для написания системных программ без обращения к драйверам ОС.
a:=Port[$367];
Port W [...]- обращение к порту с помощью слова.
Необходимо абсолютно точно знать конструкцию порта. Если порт длиной 1 байт, а происходит обращение как к 2-х байтному, то за одно обращение происходит связь с 2-м портам, при этом адрес второго отличается на 1 от адреса, заданного в PortW.
При работе с портами, в прочем, как и со всеми регистрами, следует помнить одно правило – после изменения содержимого порта, информация должна быть в нем восстановлена.
Пример. Пусть по адресу $246 находится регистр устанавливающий периферийное устройство в готовность к передаче данного, если у него установить 3 бит. По адресу $247 находится порт данных, в который нужно передать байт информации, хранящийся в переменной DAT.
Var Dat,Port_dat:byte;
…………….
Begin
……..
Port_dat:=Port[$246];
Port[$246]:=Port_dat or 8;
Port[$247]:=Dat;
Port[$246]:=Port_dat;
……..
end.
Обратите внимание! Установка бита в порте $246 осуществляется через операцию логического сложения, что изменяет содержимое других битов порта.
По алгоритму обмена информации порты делятся на три группы:
1. Непосредственные порты обмена информацией. Как правило регистры управляющие работой периферийного устройства;
2. Совмещенные порты индексный и порт данных. Объединяют несколько одинаковых по функциональному назначению регистров. В индексный порт заносится индекс порт, после чего из порта данных производится обмен информацией.
3. Объединенный индексно данный порт. Аналогичен предыдущей группе портов, но адрес индексного порта и порта данных совпадает. Наиболее сложный алгоритм обращения к такому порту будет если передается не одно данное, а целая последовательность информации. В этом случае данные следует посылать в порт с определенной временной задержкой.
Пример работы с портами будет рассмотрен в курсе «Компьютерная графика» в разделе «Непосредственное программирование видеоадаптера»/1/.