Вопросы к лабораторной работе



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

Поделиться с друзьями:






Мы поможем в написании ваших работ!