Вопросы к лабораторной работе
1) Для чего предназначены обработчики аппаратных прерываний?
2) Обработку какого прерывания производит приведенная в этой работе программа?
3) Для чего сохраняется исходный вектор прерывания?
4) Для чего производится сохранение в стек содержимого сегментных регистров на время обработки прерывания?
5) В каких случаях происходит выход из программы?
Пример программы 6.1. Обработчик аппаратных прерываний
code segment assume CS:code,DS:data main proc mov AX,data mov DS,AX mov AH,35h mov AL,08h int 21h mov word ptr old_08,BX mov word ptr old_08+2,ES mov AH,25h mov AL,08h mov DX,offset new_08; push DS push CS pop DS int 21h pop DS mov ah,01h int 21h lds DX,old_08 mov AH,25h mov AL,08h int 21h mov Ah,4Ch int 21h main endp new_08 proc push AX mov AH,0Eh mov AL,'R' int 10h mov AL,20h out 20h,AL pop AX iret new_08 endp code ends data segment old_08 dd 0 data ends stk segment stack db 256 dup (0) stk ends end main | Начало главной процедуры Сохраним исходный вектор Функция получения вектора Номер вектора Cмeщeниe исходного обработчика Установим новый обработчик Функция заполнения вектора Номер вектора Cмeщeниe нашего обработчика Сохраним DS=data Перешлем CS в DS через стек. DS:DX >new_08 Восстановим DS=data Ждем нажатия любой клавиши Перед завершением программы восстановим исходный вектор Заполним DS:DX из old_08 Функция заполнения вектора Номер вектора Функция завершения программы Конец главной процедуры Процедура – обработчик прерывания Сохраним исходное значение АХ Функция вывода символа Выводимый символ Разблокировка прерываний в контроллере прерываний восстановим AX Возврат в прерванную программу Ячейка для хранения исходного вектора |
Лабораторная работа № 7 «Изучение способов обмена данными с внешними устройствами»
|
|
Цели: Изучение работы системы ввода-вывода.
Оборудование: ПК, MS-DOS, Pascal, ассемблер.
Краткие теоретические сведения
Система ввода-вывода является одной из важнейших частей архитектуры процессора и машины в целом. К системе ввода-вывода можно отнести и способы подключения к системной шине различного оборудования и команды процессора, предназначенные для обмена данными с внешними устройствами. Системная шина представляет собой набор линий — проводов, к которым подключаются все устройства компьютера. Сигналы, распространяющиеся по шине, доступны всем подключенным к ней устройствам. В задачу каждого устройства входит выбор предназначенных ему сигналов. Процессор связан с системной шиной тремя типами линий: линии адресов, линии данных и линии управления.
Для передачи данных между программой и устройством применяют разные методы:
- программно-управляемый обмен;
|
|
- программированный ввод-вывод;
- обмен по каналу DMA;
- обмен в режиме прямого управления шиной.
Первые два метода позволяют программе непосредственно обмениваться данными с устройством — все данные во время обмена с устройством проходят через процессор.
Программно-управляемый обмен сильно загружает процессор, особенно если программа формирует и управляющие сигналы обмена. Так, например, работает драйвер параллельного порта в стандартном режиме. В результате предел пропускной способности такого порта, в зависимости от производительности процессора, может быть порядка 150 Кбайт/с.
Режим программного обмена РIO (Programmed Input/Output) построен на инструкциях блочной пересылки данных. Для этих инструкций задается начальный адрес памяти, длина блока, адрес порта и направление изменения адреса памяти (инкремент или декремент). Пересылки выполняются быстро, скорость передачи определяется производительностью (частотой) процессора и шины. Обмен в режиме РIO успешно применяется и для обмена с устройствами ATA (IDE). Поскольку полную скорость РIO периферийные устройства воспринять обычно не могут, контроллер интерфейса, аппаратно вводя такты ожидания, «притормаживает» обмен до разумных скоростей, определяемых режимом обмена.
|
|
Обмен по прямому доступу к памяти (DMA) почти не загружает процессор — выполняемые им инструкции ввода-вывода относятся лишь к анализу состояния и инициализации канала DMA, но не к самой передаче данных. Время отклика на одиночный запрос, когда контроллер «заряжен» на обмен, не превышает сотен наносекунд. Однако скорость стандартной передачи данных ниже, чем в режиме PIO.
Обмен в режиме прямого управления шиной (bus mastering) выполняется по инициативе и под управлением относительно интеллектуального контроллера, здесь центральный процессор загружается в наименьшей степени (занимается только шина). Производительность в режимах прямого управления шиной обычно выше, чем у DMA. В таком режиме могут работать контроллеры жестких дисков, видеокарты для шины AGP и некоторые другие устройства.
В данной работе для большей наглядности во всех программах был использован графический видеорежим.
Ход работы
1. Включите ПК и убедитесь в его работоспособности. Запустите Turbo Pascal.
2. Установите видеорежим. Запустите Pascal, для установки видеорежима наберите и запустите программу 7.1. Будет установлен видеорежим EGA 13h (320х240, 256 цветов). Опробуйте работу в других видеорежимах (10h - 12h).
|
|
3. Вывод точки на экран. Для вывода точки на экран прямой записью в видеопамять наберите и запустите программу 7.2.
4. Вывод палитры для данного видеорежима. Добавьте в программу строки.
for i:=1 to 255 do
for j:=0 to 10 do mem[$A000:(320*j+i)]:=i;
5. Нарисуйте прямую (вертикальную и горизонтальную), используя прямой доступ к видеопамяти.
6. Сравнение способов работы с видеоизображениями. Наберите программы 7.3. 7.4. и сравните скорость их выполнения.
7. Ответьте на вопросы к лабораторной работе.
8. Сделайте вывод по проделанной работе.
Пример программы 7.1. Установка видеорежима.
begin
asm
mov ax,13h
int 10h
end;
readln;
end.
Пример программы 7.2. Рисование точки.
begin
asm
mov ax,13h
int 10h
end;
mem[$A000:0]:=2;
readln;
end.
Пример программы 7.3. Запись в видеопамять.
var i,j:integer;
begin
asm
mov ax,13h
int 10h
end;
for i:=0 to 239 do
for j:=0 to 319 do
mem[$a000:320*i+j]:=1;
readln;
end.
Пример программы 7.4. Ввод-вывод по прерываниям (программно-управляемый обмен данными).
label l1;
begin
asm
mov ah,00h
mov al,13h
int 10h
mov cx,0h
mov dx,0h
l1:
inc cx
mov al,4
mov ah,0ch
int 10h
cmp cx,319
jne l1
inc dx
mov cx,0
cmp dx,239
jne l1
end;
readln;
end.
Вопросы к лабораторной работе
1) Назовите три составные части шины.
2) Перечислите типы видеорежимов, в которых может работать ПК.
3) Назовите способы ввода-вывода данных.
4) Какой способ ввода-вывода позволяет передавать данные с максимальной скоростью?
5) Почему запись данных в видеобуфер производится быстрее, чем ввод-вывод по прерываниям?
Дата добавления: 2019-03-09; просмотров: 406; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!