- •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 у текстовому режимі відеоадаптера.
5.Підсистеми ibm pc для тимчасових операцій. Апаратне переривання 8h і його розширення 1Ch.
Программируемое время в компьютере хранится в 2-х адресных пространствах:
1. CMOS (Complementary Metal-Oxide Semiconductor) или КМОП (расширение BIOS) — RTC (Real Time Clock) – здесь хранятся часы реального времени, питается от батарейки. CMOS-микросхема с малым потреблением энергии;
2. Ячейка памяти 46Сh – здесь хранятся часы времени суток, поступает информация от микросхемы таймера.
Оба эти времени можно программировать с целью:
-
Вывод текущего времени
-
Организовать временные задержки выполнения программ
-
Создание резидентных программ
-
получить время вып-я проги
-
созд. Cис-м типа «буд-ник»
Ячейка памяти 46Сh заполняется после включения компьютера программным средством прерывания 8h. Таймер связан с генератором линейных импульсов, который дает сигналы. Регистр-задвижка по умолчанию содержит число 65536. Контроллер аппаратных прерываний подает сигнал МП. Система делит 1196 (частоту генератора) на это число и получает число раз в сек. (18,2). 18,2 раза в сек МП обращается к вектору прерываний 8h и блокирует работу всех устройств компьютера и выполнение всех его программ путем установки IF=0. Далее 8h – к прерыванию 1Сh. 1Сh выполняет единственную команду IRET (Interrupt Return – возврат из прерывания) В ячейку памяти 0040:6Сh поступают сигналы, которые наз. «тики».
Чтение часов времени суток осуществляется функцией 00h прерывания INT 1Аh. Эта функция возвращает значение ячейки 46Сh в регистр DХ – младшая часть (сек), в СХ – старшая часть.
Команда МП int 8h поступает в МП от контроллера аппаратных прерываний через 2 линии:
IRET-выход из прерывания . Сброс контроллера необходим если подготовлен собственный разработчик int 8h.
Порт контроллера аппаратных прерываний – порт №20. 20h-код разрешения на доступ к порту .
Во время прерывания INT 1Ch все аппаратные прерывания запрещены, т.к. INT 1Ch вызывается int 8h до сброса контроллера прерываний.
Пример макроса для организации временных задержек:
Timer46Ch macro Sleep | PUSH BX, CX
MOV AH, 00h | INT 1Ah
ADD DX, 18*Sleep | MOV BX, DX Repeat:
INT 1Ah, DX | CMP DX, BX
JNE Repeat | POP CX, BX endm
7. Виведення на екран системного часу з Cmos-мікросхеми.
Вся временная информация в CMOS хранится в формате BCD чисел. BCD – это числа десятичной системы 0..9, но записанные в двоичном формате. Бывают упакованными или распакованными. Но и тот и другой формат должен содержать каждую цифру в четырех битах. Упакованный формат – это когда в одном байте можно поместить числа от 0 то 99. Каждая цифра должна занимать свой полубайт. Распакованный формат – когда в каждом байте от 0 до 9.
Вывод на экран системного времени из CMOS-микросхемы осуществляется через функцию 2h прерывания 1Аh.
mov AH,2h int 1Ah
Рез: СH-часы;СL-минуты;DH-секунды.
Пример:
DataSeg Segment PUBLIC ‘data’
Rez db ‘Time Courant:’
Time db 0,0,’:’,0,0, ’:’,0,0,13,10,’$’
CodeSeg Segment
Public
TimerCmos PROC
push ax bx cx dx
T: mov AH, 02h
Int 1Ah
Mov AL, CH
TimerBCD Time, 0
Mov AL,CL
TimerBCD Time, 3
Mov AL,DH
TimerBCD Time, 6
Mov AH,09h
Mov DX,offset Rez
Int 21h
clrScr 0
Jmp T
Stop
Pop dx cx bx ax
Ret
TimerCmos Endp
MyMacro.mac
TimeBCD Macro Addr offs
Push CX AX
AND AL, 0Fh
Add AL, 30h
Mov Addr+offs+1, AL
POP AX
Mov CL,4
Shr AL, CL
AND AL, 0Fh
Add AL, 48
Mov Addr+offs+0,AL
POP CX
Endp
Прерывание 1Ah позваляет также вывести текущий день месяц и год через ф-ю 4h
mov AH,4h int 1Ah
Результат: DL-день недели;DH-месяц; СL- год;СH- век,CF=0 (ошибка).
С помощью функции 03h можно установить время Cmos –микросхемы.
mov AH,03h
mov СH,час
mov СL,минуты
mov DH,секунды
mov DL,1
int 1Ah