- •5. Логические сегменты программы. Адресация сегментов
- •4 Типа сегментов:
- •6.Сегмент стека. Адресация стека, команды работы со стеком, изменение состояния стека.
- •7.Режимы адресации мп i8086.
- •9.Формат команд мп i8086
- •11.Система прерываний мп i8086. Понятие прерывания, вектора прерывания. Таблица векторов прерываний.
- •12.Механизм обработки прерываний в вычислительных системах на базе мп i8086.
- •13.Внешние (аппаратные) прерывания.
- •14.Логическая структура контроллера прерываний.
- •16.Особенности программ в сом-формате. Структура, хранение на диске, загрузка в память,варианты завершения.
- •17.Особенности программ в ехе-формате. Структура, хранение на диске, загрузка в память,варианты завершения.
- •18.Распределение адресного пространства (карта памяти)
- •19.Управление памятью в реальном режиме
- •20.Организация взаимодействия мп i8086 с клавиатурой
- •22. Особенности мп i80386. Виды организации логического пространства
- •23.Структура кода команды мп i80386:
- •24. Регистровая модель мп i80386
- •25.Регистры флагов:
- •26.Общая структура кода команды мп 80386
- •27. Методы адресации i80386:
- •32.Страничная организация памяти:
- •34. Средства защиты по привелегиям:
20.Организация взаимодействия мп i8086 с клавиатурой
Контроллер клавиатуры распознает каждую нажатую клавишу и помещает ее в скэн-код или номер порта 60h. Любой клавише соответствует два скэн-кода: код нажатия и код отпускания(на 80h больше).
При нажатии клавиши вырабатывается сигнал аппаратного прерывания, по которому вызывается процедура int 09 – стандартногообработчика клавиатуры.
Int09 считывает из порта 60h скэн-код нажатой клавиши и анализирует его значение. В соответствии с состоянием байта флагов вырабатывается соответствующий ASCII-код нажатой клавиши и помещается вместе со скэн-кодем в кольцевой буфер ввода.
Буфер располагается в области данных BIOS, в ячейке 41Eh-43Ch адресуется двумя указателями. Адрес хвостового символа - первая свободная ячейка. Адрес головного символа- самый старый код помещает в буфер. При запросе прикладной программы из буфера считывается самый старый код, адрес головного символа увеличился на 2. при нажатии клавишей скэн-код и ASCII-код помещаются по адресу хвоста, при этом значение хвостового указателя увеличится на 2. если буфер пуст – оба указателя равны между собой, причем в начале работы они равны 1E. Буфер переполнен, когда адрес головы на 4 больше, чем адрес хвоста.
21.Организация текстового видеобуфера. Пример работы с текстовым видеобуфером.
Текстовый видеобуфер находится по адресу 0b800h. Количество страниц зависит от адаптера. Размер страницы=4кб. Страницы нумеруются с 0. Любой код, записывающийся в видеобуфер, сразу отображается на экране в определенной позиции. Символ занимает в видеобуфере 2 байта: код символа и атрибуты. Байты записываются в видеобуфер в том порядке, в котором должны появиться на экране, управляющие коды значения не имеют. Чтоб получить доступ в видеобуфер, требуется в сегментный регистр ES занести сегментный адрес буфера. Значение смещения определяет позицию символа на экране. Вывод осуществляется командами пересылки строк
Mov ax, 0b800h
Mov es,ax
Mov di, 80*2*17+25*2 ; начальный символ на экране
Lea si, message
Mov cx, len_mes
Rep mov sb
; вобласти данных
Message DB ‘П’,65,’Р’,65,‘И’,65, ‘М’,65, ‘Е’,65, ‘Р’,65
Len_mes equ $-message
80*2*12+35*2, 80 – количество мест, 12 – строка, 35 – позиция в строке
22. Особенности мп i80386. Виды организации логического пространства
Особенности:
1. 32 битная архитектура
2.объем адресного пространства 4Гб
3.аппаратно реализованный механизм виртуальной памяти.
4.аппаратно реализованная многозадачность.
5. работа в 3-х режимах: нормальном, защищенном, виртуальный машинный.
23.Структура кода команды мп i80386:
|
масштаб |
SS=00 |
1 |
SS=01 |
2 |
SS=10 |
4 |
SS=11 |
8 |
Поле index- задает индексные регистры.
|
Base |
операнд |
||||||||||||||||||
00 |
000 |
DS:[EAX+S*I] |
||||||||||||||||||
00 |
001 |
DS:[ECX+S*I] |
||||||||||||||||||
00 |
010 |
DS:[EDX+S*I] |
||||||||||||||||||
00 |
011 |
DS:[EBX+S*I] |
||||||||||||||||||
00 |
100 |
DS:[ESP+S*I] |
||||||||||||||||||
00 |
101 |
DS:[EBP+disp32+S*I] |
||||||||||||||||||
00 |
110 |
DS:[ESI+S*I] |
||||||||||||||||||
00 |
111 |
DS:[EAX+S*I+disp8] |
||||||||||||||||||
- |
- |
---------- |
||||||||||||||||||
10 |
000 |
DS:[EAX+S*I+disp32] |
Если index=0 не используется масштабирование. Комбинации с полем mod пост байта указывает размер базы и смещение для 32 битных операндов.