Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
121
Добавлен:
27.04.2015
Размер:
776.7 Кб
Скачать

5.2.4 Функции регистров порта

Базовая система ввода вывода отводит для портов 4 области по 8 последовательно расположенных адресов нулевомсегменте: 2E8-2EF, 2F8-2FF, 3E8-3EF и 3F8-3FF. Номер регистра в каждой области определяется значением последней цифры. Поэтому далее номера регистров будут определяться обозначением ХХi, где i номер регистра 8,9,A,..,E (рассматриваются функции 7-ми регистров). Номер первого регистра в области ХХ8 называютбазовым адресом порта. Базовый адрес и все остальные адреса регистров порта больше 256, поэтому он задается в регистре DX. Для обращения к порту используются команды

in DX,AL– чтение из регистра, указанного DX в регистр процессора AL

out DX,AL– запись в регистр, указанный DX, из регистра процессора AL.

На лабораторных занятиях мы, для обращения к регистрам порта, будем пользоваться программой debug (отладчик), которая является интерпретатором инструкций отладчика (команд отладчика). Например, инструкция отладчика

o 3F8 55

будет интерпретироваться командами

mov DX, 3F8h ; Загрузка адреса регистра порта в регистр процессора DX

mov AL, 55h ; Загрузка байта 55h в регистр процессора AL

out DX, AL ; Запись содержимого AL, в реистр порта с адресом из DX

а инструкция отладчика

i 3F8

будет интерпретироваться командами

mov DX, 3F8

in AL,DX

Размерность операнда, который записывается или считывается из регистров определяется размерностью указанного в команде регистра процессораAL, AXили EAX.

5.2.4.1 Регистр данных ХХ8– используется для обмена данными с портом и записи младших разрядов константы - делителя частоты тактового генератора, которая определяет скорость передачи (после ввода в управляющий регистр байта с установленным старшим битом). Для записи в порт и передачи кода 0101 0101b=55h необходимо выпорнить инструкцию o 3F8 55.

Зависимость скорости передачи от значения делителя частоты приведена в таблице 5.

Таблица 5

Делитель (10)

Делитель (16)

Скорость бит/сек

1040

600h

110

768

300h

150

368

180h

300

192

0C0h

600

96

60h

1200

48

30h

2400

24

18h

4800

12

0Ch

9600

6

6h

19200

3

3h

38400

2

2

57600

1

1

115200

5.2.4.2 Регистр управления прерывания

Этот регистр используется либо для управления прерываниями от порта либо (после ввода в управляющий регистр байта с установленным старшим битом) для ввода старшего бита делителя частоты тактового генератора.

Например, если необходимо формировать прерывания при приеме каждого очередного байта, то необходимо записать в регистр управления прерываниями код 01h (0000 0001b). Если прерывания не используются, то этот регистр должен иметь значение 00h.

5.2.4.3 Регистр идентификации прерываний

Вэтот регистр порт записывает причину формирования прерывания. Считывая состояние этого регистра, программа может определить причину прерывания.

Если необходимо узнать причину возникшего прерывания, то нужно выполнит инструкцию i 3FA и проанализировать результат. Например, если разрешено прерывание при готовности данных и после возникновения прерывания прочитан код 04h, то приемном буфере (регистре данных 3F8h) находиться принятый код. После чтения состояния линии (регистра 3FD) значение в этом регистре сбрасывается.