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

14. Структура власного (користувацького) вектора переривання. Завантаження в оперативну пам'ять власного вектора переривання і його вивантаження з пам'яті. (Проілюструвати фрагментом програми ).

Сигнал от внешних устройств поступает в компьютер через микросхему PIC (Programmable Interrupted Controller), которая состоит из 2 контролеров аппаратных прерываний (ведущий, ведомый) К каждому из них на аппаратном уровне подключаются по 8 внешних устройств, Каждый из них имеет свой базовый адрес 8h и 70h соответственно. IRQ (Interruption Request)-вектор аппаратного прерывания

ОС управляет работой всех устройств компьютера и выполнение программ через прерывания. Прерывание – готовая к выполнению процедура. Последовательность выполнения программы можно нарушить 2 мя способами:

  1. CALL – вызов процедуры.. Она обращается к фрагменту, который находится в адресном пространстве нашей программы. При CALL в стеке сохраняется только адрес возврата.

  2. Int – вызов прерывания. Вызывается также фрагмент программы, но он не находится не в адресном пространстве программы. В стек записываются 3 параметра:

1.регистр флага 2.код сегмента 3. IP (смещение)

Создание собственных векторов прерываний

  1. выбирае6м любой вектор прерываний, есть много свободных прерываний 60h-66h

  2. нужно сохранить содержимое выбранного прерывания в ячейке памяти

  3. преобразуем выбранное прерывание. Работаем с прерыванием

  4. возвращаем старые значения (восстановим вектор прерывания)

Если есть необходимость запретить обработку запросов от какого то устройства можно программировать регистр маски. Обращение к нему через 21h путем установления маски учитывая структуру регистра запроса.

Запретить работу клавиатуры

In al,21h Or al,00000010b Out 21h,al

Поступающие команды более высокого приоритета обслуживаются раньше и называются вложенными.

Cli –блокировка обработка всех аппаратных прерываний

Sti – разблокировать все запреты

Создание собственных векторов базируется на использовании 2х под номерами 21h и 35h (сохраняет значения вектора прерывания в регистрах ES:BX. Значения берет из регистров CS:IP).

Oldaddres dd 0 Mov ah,35h

Mov al,65h {номер прерывания} Int 21h

Mov oldaddres word ptr, bx Mov oldaddres+2 word ptr, es

Функция 25h устанавливает новый обработчик прерываний. Она находит свободное место и помещает наш обработчик прерывания

Ah=25h Al=myint65h Int 21h

Логика таких вызовов такова, что адрес нашего обработчика прерывания должен содержаться в регистре DS:DX. При использовании этой функции нужно на время загрузки адрес кода сегмента, где содержится наша функция перенаправить на сегментные регистр DS

Mov ah,25h Mov al,offset MyInt65h

Push ds Push cs

Pop ds Int 21h Pop ds

15. Функції dos, використовувані при створенні користувацького вектора переривання. (Проілюструвати програмою).

DataSg Segment

myInt db ‘xxxxxxxxx’

db ‘MyInterrupt Int 65h’

db ‘xxxxxxxxx’

oldint dd 0

srt1 db ‘My Int’,13,10,’$’

DataSg ends

CodeSg Segment

MyInt PROC

Push ax bx cx dx

Pop ax cx bx dx

IERT

MyInt EndS

BeginAsm PROC FAR

Moc ax,datasq

Mov cx,ax

;сохраняем значения старых прерываний

Mov ah,35h

Mov al,65h

Int 21h

Mov WORD PTR oldint,bx

Mov WORD PTR oldint+2,es

; устанавливаем собственный обработчик прерывания

Mov ah,25h

Mov al,65h

Mov dx,offset myint

Push ds

Push cs

Pop ds

Int 21h

Pop ds

Mov ah,9h

Mov dx,offset str1

Int 21h

Stop

Int 65h

Lds dx,oldint

Mov ax,2565h

Int 21h

13. СОМ-порти і їх програмування.

COM-порт-последовательный порт для передачи данных между ПК, телефонами, карманными компьютерами, а также для подключения периферии.

Сводится к управлению линией интерфейса RS-232c. Для подключения компьютера к внешним устройствам через RS-232с используют 2 типа разъёма: DB9P; DB25P. Разъёмы предусматривают 3 выходных линии, по которым компьютер передаёт сигнал об оборудовании, и 5 входных, через которые внешние устройства посылают сигнал комп-ру. каждый из разъемов COM-1, COM-2 аппаратно сопрягаются с микросхемой, которая называется UART(universal Asynchrinus Receive Transmiter, универсальный асинхронный приемник передач). Базовые адреса UART 1, UART 2 находится в ячейках оперативной памяти:

Address COM 1->0040:0000

Address COM 2->0040:0002

Mov AX,40h

Mov ES,AX

Mov DX,ES:[0]; DX=3FEh…3FEh

Mov DX,ES:[2]; DX=2FEh…2FEh

Как физические устройства, СОМ-порты сопряжены с контроллером аппаратного прерывания по линии СОМ1 IRQ4(обработка прерывания адрес:8+4=0Ch), СОМ2 IRQ3(обработка прерывания адрес:8+3=0Ch). Микросхема UART содержит 10 программируемых регистров(однобайтовых) через которые программируются линии интерфейса RS-232c. Доступ к программированию этих линий осуществляется через семь адресов в сторону увеличения. Программно обращение к регистрам осуществляется так:

Add DX,3

DEC DX,1

Порт 3F8h.Этот порт соответствует регистру передаваемых данных. Для передачи в порт 3F8h необходимо записать байт передаваемых данных. После приема данных от внешнего устройства они могут быть прочитаны из этого порта. В зависимости от состояния бита управляющего слова, выводимого в управляющий регистр с адресом 3F8h, назначение порта 3F8h изменяться. Если этот бит равен 0,порт используется для записи передаваемых данных.Если же этот бит равен 1, порт используется для вывода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делите- ля, можно изменять скорость передачи данных. Старший байт делителя записывается в порт 3F9h.

Порт 3F9h.Порт используется как регистр управления прерываниями от асинхронного адаптера или (после вывода в порт 3F9h байта с установленым в 1 стар- шим битом) для вывода значения старшего байта делителя частоты тактового генератора. В режиме регистра управления прерываниями порт имеет следующий формат.

Бит Значение

    1. 1 - разрешемие прерывания при готовности принимаемых данных.

    2. 1 - разрешение прерывания после передачи байта (когда выхо - дной выходной буфер передачи пуст.)

    3. 1 - разрешение прерывания по обнаружении состояния "BREAK" или ошибки.

    4. 1 - разрешение прерывания по изменению на разъёме RS-232-C.

Регистр состоянии линии. Значение зарядов регистра приведены в таблице 6.Таблица 6.

Бит

Значение

0

Данные получены и готовы для чтения, сбрасываетсь при чтении данных.

1

Ошибка переполнения. Был принят новый байт данных, а предыдущий ещё не был считан программой. Предыдущий байт потерен.

2

Ошибка чётности, сбрасывается после чтения состояния линии.

3

Ошибка синхронизации.

4

Обнаружен запрос на прерывание передачи "BREAK" - длинная строка нулей.

5

Регистр хранения передатчика пуст, в него можно записать новый байт для передачи.

6

Регистр сдвига передатчика пуст. Этот регистр получает данные из регистра хранения и преобразует их в последовательный вид для передачи.

7

Тайм-аут (устройство не связано с компьютером)

  1. Порт 3FEh.Регистр состояния модема. Значения битов указвны в таблице 7.

Бит

Значение

0

Линия CTS изменила состояние.

1

Линия DSR изменила состояние.

2

Линия IR изменила состояние.

3

Линия DCD изменила состояние.

4

Состояние линии CTS

5

Состояние линии DSR

6

Состояние линии IR.

7

Состояние линии DCD.

Приём и передача данных.

Перед записью байта данных в регистр передатчика нужно убедиться, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего символа завершена. Признаком свободы регистра передатчика является установленный в 1 бит 5 регистра состояния линии с адресом 3FDh.

Аналогично передачи данных перед вводом символа из порта приёмника 3F8h следует убедиться, что бит 0 порта 3FDh установлен в 1, то есть что символ принят из линии и находиться в вуферном регистре приёмника.

    1. Не используются, должны быть равны 0.

Порт 3FAh.

Регистр идентификации прерывания. По его содержимому программа может определить причину прерывания. Формат регистра приведён в таблице 3.

Таблица 3.

Бит

Значение

0

1 - нет прерываний, ожидающих обслуживания.

1-2

00 - прерывание по линии состояния приёмника, возникает при переполнении приёмника, ошибка чётности или формата данных, или при состоянии "BREAK". Сбрасывается после чтения состо - яния линии и порта 3FDh.

01 - данные приняты и доступны для чтения. Сбрасывается после после чтения данных из порта 3F8h.

11 - Состояние модема. Устонавливается при изменении состояния входных линий CTS, RI, DCD, DSR.

3-7

Должны быть равны 0.

Порт 3FBh.

Управляющий регистр, доступен по записи и чтению. Его формат показан в таблице 4.

Таблица 4.

Бит

Значение

0-1

Длинна слова в байтах. 00 - 5 бит.

01 - 6 бит.

10 - 7 бит.

11 - 8 бит.

2

Количество стоповых битов: 0 - 1 бит, 1 - 2 бита.

3-4

Чётность:

10 - контроль на чётность неиспользуется;

01 - контроль на нечётность.

11 - контроль на чётность.

5

Фиксация чётности. При установки этого бита бит чётности всегда принимает зна - чение 0 (если биты 3-4 равны 11) или 1 (если биты 3-4 равны 01)

6

Установка перерыва. Вызывает вывыод строки нулей в качестве сигнала "BREAK" для подключения устройства.

7

1 - порты 3F8h и 3F9h используется для загрузки делителя частоты тактового генератора; 0 - порты используются как обычно

Порт 3FCh.

Регитр управления модемом. Упровляет состоянием выходных линий DTR, RTS, линий, специфических для модемов OUT1 и OUT2, для запуска диагно- стики при входе асинхронного адаптера, замкнутым на его выход. Формат порта приведён в таблице 5.

Таблица 5.

Бит

Значение

0

Линия DTR

1

Линия RTS.

2

Линия OUT1 (запасная)

3

Линия OUT2 (запасная)

4

Запуск диагностики при входе асинхронного| адаптера, замкнутом на его выход.

5-7

Должно быть равно 0

Порт 3FDh.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]