Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Формат двухоперандной команды. Назначение служебных полей постбайта и кода операции

Регистр-регистр, регистр-память.

КОП - команда, d- бит направления, направление передачи данных(1-в регистр,0-из reg), w- размер, тип операнда(0-байт,1-слово 2b)

Поле reg задает регистр теми же значениями, что и поле регистров память.

 

 

11.Система прерываний МП i8086. Понятие прерывания, вектора прерывания. Таблица векторов прерываний. Прерывание - сигнал, заставляющий МП прекратить выполнение текущей программы и переключиться на выполнение др. программы, называемой процедурой обработки прерывания(ПОП). После обслуживания прерывания, возобновляется прерывание программы, т.о. система прерываний обеспечивает реакции МП на события, требующие вмешательства. Виды прерываний: Все прерывания делятся на внутренние и внешние. Внутренние возникают в результате работы самого МП, могут инициализироваться самим МП (называются логическими прерываниями), либо инициализируются программно (называются программными). Внешние прерывания возникают по сигналу какого-либо устройства. Все внешние делятся на маскируемые и немаскируемые. МП имеет 2 входа, по которым может поступать сигнал прерывания. Во-первых, это вход, который называется INTR - запрос на прерывание поступает с контроллера прерываний (маскируемые или аппаратных прерывания). Второй вход, минуя контроллер NMI (немаскируемые прерывания). МП имеет двухуровневую векторную систему прерываний с внутренними и внешними источниками. Может распознавать до 256 различных прерываний. Любой источник прерывания характеризуется своим номером (кодом 0..256) - однозначно определяется вид прерывания. МП использует данный номер для определения точки входа в специальную таблицу, которая называется таблицей векторов прерываний. Она располагается в младших адресах адресного пространства, начиная с логического адреса 00. Занимает 1 Kb памяти, состоит из ячеек размером по 4b. Любая ячейка содержит вектор (адрес) процедуры обработки прерывания в формате (сегмент-смещение CS:IP). 0-прерывание хранится по делению на 0. CS:IP=2BE805F1(младший байт хранится в ячейке с младшим адресом). Часть номеров прерываний определяется архитектурой МП, часть определяется ОС и остальные относятся к пользовательским прерываниям. 12.Механизм обработки прерываний в вычислительных системах на базе МП i8086. 1. Определяется соответствующий номер прерывания 2. В стеке прерванной программы сохраняется значение флагового регистра, CS, IP 3. Сбрасываются флаги трассировки и прерывания. Запрещаются все прерывания 4. Из вектора с соответствующим номером в регистры CS:IP загружается адрес ПОП. Переход к программному коду процедуры 5. Выполнение процедуры 6. Завершение ПОП осуществляется с помощью команды IRET, кот. извлекает и стека значения IP, CS, Flags   13.Внешние (аппаратные) прерывания. Сигналы внешних прерываний возникают в устройствах, поступают в МП через контроллер, т.о. обработка аппаратных прерываний включает в себя процедуру управления контроллером.   К 8 входным линиям контроллера IRQ0..IRQ7 подключены выводы внешних устройств, на которых возникают сигналы прерываний. Контроллер направляет сигналы от устройств в МП, на вход IntR и передает по линиям данных номер вектора, через который должна быть вызвана процедура обработки прерывания. N вектора образуется в контроллере путем сложения базового вектора в одном из регистров контроллера и номера линии IRQ. Базовый вектор для одного контроллера =8, следовательно номера векторов соответствующих прерываний лежат в диапазоне 08h..0Fh. Для обслуживания большого кол-ва устройств, контроллеры объединяются в веерообразную структуру. Один из контроллеров ведущий, второй - ведомый. Соединение производится через канал ввода-вывода. Базовый вектор для ведомого контроллера =70h порт A0h A1h, для ведущего =8h порт 20h 21h. 14.Логическая структура контроллера прерываний. МП IF=1 EOI конец прерываний Сигнал по линии IRQ1 (от клавиатуры) поступает на вход регистра запросов и устанавливает в 1 соответствующий бит. Если в регистре маски соответствующий бит равен 0, прерывание не замаскировано и сигнал проходит схему анализа приоритетов. Стандартная настройка приоритетов: чем > N линий IRQ, тем ниже приоритет. Сигнал дает разрешение на установку бита в регистре обслуживаемых запросов и поступает на вход INTR МП. МП регистрирует поступление сигнала только в том случае, если IF=1. Получив сигнал ENTR, МП выдает сигнал INTA, который поступает в контроллер прерываний и выполняет 2 действия: 1. устанавливает нулевой бит в регистре обслуживания запросов и сбрасывает бит в регистре запросов. По этой линии может прийти следующий сигнал прерываний. 2. в регистре обслуживания запросов воздействует на схему анализа приоритета т.о., что запрещены все прерывания с более низким приоритетом. Для разблокировки прерывания выдается сигнал EOI. Это выполняется в процедуре обработки прерываний. Сигнал INTA сбрасывает флаг IF, т.о. оказываются запрещенным все прерывания. Поэтому процедура обработки прерывания должна воздействовать на IF в начале своей работы.  
16.Особенности программ в СОМ - формате. Структура, хранение на диске, загрузка в память, варианты завершения. Особенности: - минимальная модель памяти - размер < 64 кб (сегмент) - абсолютный образ памяти - не содержит заголовков и настроечной информации, только машинный код - не контролируется содержимое Загружается в память с помощью системного загрузчика EXEC. Данная функция строит в памяти т.н. префикс сегмента программы (PSP) – настраивает адреса и передает управление на точку входа в программу (первая исполняемая инструкция). PSP – специальная структура, в кот. по фиксированным адресам хранится информация, используемая в процессе работы программы. При загрузке в стек заносится нулевое слово, кот. используется ля завершения программы. Max размер=64кб-256(psp)-2б(стек) Общая структура: <имя сегмента кодов>SEGMENT<параметры> ASSUME СS:<имя сегмента кодов> DS: :<имя сегмента данных> SS:<имя сегмента стека> ES: nothing ORG 100h (явно задает смещение, резервирование под префикс первой инструкции) <Имя процедуры> PROC NEAR ;код ;завершение <имя процедуры> ENDP ; определение данных <Имя сегмента кодов> ENDS END <имя программы> Если определение данных требуется сделать в начале программы, то первой инструкцией должна быть jmp main Варианты завершения: - инструкция RET - INT 20h в конце процедуры - ф-ция 4ch прерывания INT 21h позволяет передать в вызываемую процедуру код завершения 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 – позиция в строке       17.Особенности программ в ЕХЕ - формате. Структура, хранение на диске, загрузка в память, варианты завершения.       - малая, средняя, большая модель памяти - содержит любое количество сегментов, след. может иметь любой размер - имеет спец. заголовок, кот. используется системным загрузчиком при запуске программы Загружается в память с помощью системного загрузчика EXEC. Данная функция строит в памяти т.н. префикс сегмента программы (PSP) – настраивает адреса и передает управление на точку входа в программу (первая исполняемая инструкция). PSP – специальная структура, в кот. по фиксированным адресам хранится информация, используемая в процессе работы программы. Последовательность сегментов определяется программистом. При загрузке программе выделяется 2 блока памяти, один под переменные окружения, другой для самой программы. Область окружения содержит строки ASCIIZ, т.е. строки символов, заканчивающиеся нулем. Каждая строка описывает глобальную переменную системы, примеры: TEMP=C:\WINDOWS\TEMP,0 ; COMSPEC=C:\cmd.exe,0. В блоке памяти выделенном программе загрузчик строит информационную структуру – префикс программного сегмента (PSP), настраивает адреса, загружает регистры, передает управление на точку входа программы. SP настраивается по заголовку, данные остаются неадресованными, т.к. DS и ES указывают на префикс. Инициализацию данных должна выполнить сама программа в начале своей работы. Структура: <имя сегмента стека> SEGMENT <параметры> ; определение размера стека <имя сегмента стека> ENDS <имя сегмента данных> SEGMENT <параметры> ; определение данных <имя сегмента данных> ENDS <имя сегмента кодов> SEGMENT <параметры> ASSUME СS:<имя сегмента кодов> DS: <имя сегмента данных> SS:<имя сегмента стека> ES: nothing <имя процедуры> PROC FAR ;Инициализация программы ; код ; завершение <имя процедуры> EDNP <имя сегмента кодов> ENDS END <имя основной процедуры> Инициализация: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX Варианты завершения: - FAR RET - 4ch int 21h   18.Распределение адресного пространства (карта памяти) Для пользовательских программ выделяется память блоками размером 0-FFFFh $ в области транзитных программ. Учет свободной и занятой памяти ведется с помощью спец. блоков MCB (Memory Control Blocks)=16байт. Размещается непосредственно над тем блоком памяти, кот. он контролирует. MCB соединены в цепочку Формат:   Адрес первого MCB хранится в области данных ОС и может быть получен с помощью ф-ции 52h прерывания int 21h, в результате кот. в ES:BX система вернет полный логический адрес списка сегментов. ПО смещению «-2» хранится адрес первого MCB. При загрузке программы ей выделяется 2 блока: под переменные окружения и под саму программу. 19.Управление памятью в реальном режиме 1) 48h – выделяет блок памяти 2) 49h освобождает блок памяти 3) 4Ah – изменяет размер блока памяти Эти ф-ции могут быть использованы программой в след. случаях: 1)когда требуется выделить доп. память под динамические данные 2)если требуется сократить размер выделенного блока до реального размера программы 3)если требуется освободить блок памяти либо от дочерней программы, либо от самой себя (программа самовыгружается – для резидентных программ) 20.Взаимодействие с клавиатурой Контроллер клавиатуры распознает каждую нажатую клавишу и помещает ее в скэн-код или номер порта 60h. Любой клавише соответствует два скэн-кода: код нажатия и код отпускания(на 80h больше). При нажатии клавиши вырабатывается сигнал аппаратного прерывания, по которому вызывается процедура int 09 – стандартного обработчика клавиатуры. Int09 считывает из порта 60h скэн-код нажатой клавиши и анализирует его значение. В соответствии с состоянием байта флагов вырабатывается соответствующий ASCII-код нажатой клавиши и помещается вместе со скэн-кодем в кольцевой буфер ввода. Буфер располагается в области данных BIOS, в ячейке 41Eh-43Ch адресуется двумя указателями. Адрес хвостового символа - первая свободная ячейка. Адрес головного символа- самый старый код помещает в буфер. При запросе прикладной программы из буфера считывается самый старый код, адрес головного символа увеличился на 2. при нажатии клавишей скэн-код и ASCII-код помещаются по адресу хвоста, при этом значение хвостового указателя увеличится на 2. если буфер пуст – оба указателя равны между собой, причем в начале работы они равны 1E. Буфер переполнен, когда адрес головы на 4 больше, чем адрес хвоста.  

 




©2015 studenchik.ru Все права принадлежат авторам размещенных материалов.