Вопросы к лабораторной работе
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; просмотров: 408; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
