Архитектура микропроцессоров и их программирование. Карягин А.П. - 47 стр.

UptoLike

Составители: 

47
Рисунок 5.3 - Процедура обслуживания прерывания
Внутренние прерывания возбуждаются самим процессором при возник-
новении одной из специальных ситуаций, например, деление на ноль (вектор 0)
или при попытке выполнить неправильную команду (вектор 6).
Программные прерывания вызываются командой INT c числовым аргу-
ментом, рассматриваемым процессором как номер вектора прерывания. Напри-
мер, команда INT 10H вызывает системные обслуживающие программы BIOS
монитора.
5.2.2 Примеры использования вектора прерывания 10h
Прерывание INT 10H обеспечивает управление всем экраном. В регист-
ре AH устанавливается код, определяющий функцию прерывания. Ниже опи-
саны все возможные функции и приведены примеры их использования.
1) INT10_SET_MODE = 000h ; set video mode (установка режима).
Порядок установки режима:
- предварительно необходимо выбрать режим согласно таблице 5.1;
- установить выбранный режим:
mov ah,00 ; установка режима
mov al,03 ; стандартный 16-цветовой текстовый
int 21h
Для определения типа адаптера используйте прерывание 11H. Данная
команда возвращает в регистре AX значение, в котором 5 и 4 биты указывают
на видеорежим: 10 - 80*25, черно-белый режим в цветном адаптере; 11 - 80*25,
черно-белый режим в черно-белом адаптере.
Процессор
CS ОбрПр 1
Флаги
CS
IP
IP ОбрПр 0
CS ОбрПр 0
IP ОбрПр 1
IP
CS
Флаги
IP ОбрПр n
CS ОбрПр n
Вектор прерывания 0
Вектор прерывания 1
Вектор прерывания n
Вектор прерванного
п
р
о
ц
есса
Адреса памяти
0
2
4
6
N
*4
N
*4+2
SP на момент
прерывания
                          Адреса памяти
                                      0
                                          IP ОбрПр 0
                                                       Вектор прерывания 0
                                      2   CS ОбрПр 0
                                      4   IP ОбрПр 1
                                                       Вектор прерывания 1
                                      6   CS ОбрПр 1
      Процессор
                             N*4
         IP                               IP ОбрПр n
                              N*4+2                     Вектор прерывания n
         CS                               CS ОбрПр n
      Флаги
                                              IP
                                                       Вектор прерванного
                                              CS       процесса
                                            Флаги
                                                        SP на момент
                                                        прерывания


      Рисунок 5.3 - Процедура обслуживания прерывания

       Внутренние прерывания возбуждаются самим процессором при возник-
новении одной из специальных ситуаций, например, деление на ноль (вектор 0)
или при попытке выполнить неправильную команду (вектор 6).
       Программные прерывания вызываются командой INT c числовым аргу-
ментом, рассматриваемым процессором как номер вектора прерывания. Напри-
мер, команда INT 10H вызывает системные обслуживающие программы BIOS
монитора.

     5.2.2 Примеры использования вектора прерывания 10h

       Прерывание INT 10H обеспечивает управление всем экраном. В регист-
ре AH устанавливается код, определяющий функцию прерывания. Ниже опи-
саны все возможные функции и приведены примеры их использования.
       1) INT10_SET_MODE = 000h ; set video mode (установка режима).
       Порядок установки режима:
       - предварительно необходимо выбрать режим согласно таблице 5.1;
       - установить выбранный режим:
                    mov ah,00 ; установка режима
                    mov al,03 ; стандартный 16-цветовой текстовый
                    int 21h
       Для определения типа адаптера используйте прерывание 11H. Данная
команда возвращает в регистре AX значение, в котором 5 и 4 биты указывают
на видеорежим: 10 - 80*25, черно-белый режим в цветном адаптере; 11 - 80*25,
черно-белый режим в черно-белом адаптере.
                                                                              47