- •1.Шинна архітектура ibm pc. Класифікація шин комп'ютера по їхньому функціональнім призначенню. Пропускна здатність шини.
- •3.Відеопам'ять адаптера vga і її фізична організація. Банки відеопам'яті адаптера vga і їх призначення. Логічна організація відеопам'яті в текстовому режимі.
- •5.Підсистеми ibm pc для тимчасових операцій. Апаратне переривання 8h і його розширення 1Ch.
- •7. Виведення на екран системного часу з Cmos-мікросхеми.
- •9. Мікросхема таймера і її організація. Канали мікросхеми таймера і їх призначення. (Проілюструвати фрагментами програми).
- •10. Шлях проходження ‘тиків’ у комірку пам'яті 46Сh. Програмування годин часу доби.
- •8. Переривання 1Ah і його використання.
- •6.Читання часу доби ibm pc і виведення його на екран.
- •4.Відеосторінки і їх програмування. Етапи програмування.
- •2.Взаємодія мікропроцесора з текстовим відеобуфером. Байт атрибутів vga. (Проілюструвати фрагментом програми).
- •11. Регістри сом-портів і їх призначення.
- •15. Функції dos, використовувані при створенні користувацького вектора переривання. (Проілюструвати програмою).
- •14. Структура власного (користувацького) вектора переривання. Завантаження в оперативну пам'ять власного вектора переривання і його вивантаження з пам'яті. (Проілюструвати фрагментом програми ).
- •12. Роль кодової таблиці ascii у текстовому режимі відеоадаптера.
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
14. Структура власного (користувацького) вектора переривання. Завантаження в оперативну пам'ять власного вектора переривання і його вивантаження з пам'яті. (Проілюструвати фрагментом програми ).
Сигнал от внешних устройств поступает в компьютер через микросхему PIC (Programmable Interrupted Controller), которая состоит из 2 контролеров аппаратных прерываний (ведущий, ведомый) К каждому из них на аппаратном уровне подключаются по 8 внешних устройств, Каждый из них имеет свой базовый адрес 8h и 70h соответственно. IRQ-вектор аппаратного прерывания ОС управляет работой всех устройств компьютера и выполнение программ через прерывания. Прерывание – готовая к выполнению процедура. Последовательность выполнения программы можно нарушить 2 мя способами:
-
CALL – вызов процедуры.. Она обращается к фрагменту, который находится в адресном пространстве нашей программы. При CALL в стеке сохраняется только адрес возврата.
-
Int – вызов прерывания. Вызывается также фрагмент программы, но он не находится не в адресном пространстве программы. В стек записываются 3 параметра:
1.регистр флага 2.код сегмента 3. IP (смещение)
Создание собственных векторов прерываний
-
выбирае6м любой вектор прерываний, есть много свободных прерываний 60h-66h
-
нужно сохранить содержимое выбранного прерывания в ячейке памяти
-
преобразуем выбранное прерывание. Работаем с прерыванием
-
возвращаем старые значения (восстановим вектор прерывания)
Если есть необходимость запретить обработку запросов от какого то устройства можно программировать регистр маски. Обращение к нему через 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
|
ния линии и порта 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 |
Установка перерыва. Вызывает вывод строки 0 в качестве сигнала "BREAK" для подключения устройства. |
7 |
1 - порты 3F8h и 3F9h используется для загрузки делителя частоты тактового генератора; 0 - порты используются как обычно |
Порт 3FCh.
Регистр управления модемом. Управляет состоянием выходных линий DTR, RTS, линий, специфических для модемов OUT1 и OUT2, для запуска диагностики при входе асинхронного адаптера, замкнутым на его выход. Формат порта приведён в таблице 5.
Таблица 5.
Бит |
Значение |
0 |
Линия DTR |
1 |
Линия RTS. |
2 |
Линия OUT1 (запасная) |
3 |
Линия OUT2 (запасная) |
Регистр состоянии линии. Значение зарядов регистра приведены в таблице 6.Таблица 6.
Бит |
Значение |
0 |
Данные получены и готовы для чтения, сбрасывается при чтении данных. |
1 |
Ошибка переполнения. Был принят новый байт данных, а предыдущий ещё не был считан программой. Предыдущий байт потерян. |
2 |
Ошибка чётности, сбрасывается после чтения состояния линии. |
3 |
Ошибка синхронизации. |
4 |
Обнаружен запрос на прерывание передачи "BREAK" . |
5 |
Регистр хранения передатчика пуст, в него можно записать новый байт для передачи. |
6 |
Регистр сдвига передатчика пуст. Он получает данные из регистра хранения и преобразует их в последоват. вид для передачи. |
7 |
Тайм-аут (устройство не связано с компьютером) |
Порт 3FEh.Регистр состояния модема. Значения битов указаны в таблице 7.