- •1. Архитектура мп Intel 8086/8088. Алгоритм работы. Структурная схема. Операционное устройство, шинный интерфейс мп.
- •2. Организация памяти ibm. Единицы измерения памяти, сегментация памяти, вычисление физического адреса. Назначение и принцип работы стека.
- •3. Система ввода - вывода, адресное пространство ввода - вывода (порты), схема распределения адресного пространства портов ввода вывода. Команды ввода - вывода.
- •5. Программная модель мп. Состав, назначение. Группирование программно-доступных регистров. Назначение регистра флагов, его состав. Формирование физического адреса.
- •6. Режим адресации. Загрузка адреса в регистр. Директива offset. Обращение к массиву байт и массиву слов. Индексация в 2-х мерном массиве.
- •9. Команды ассемблера. Назначение и примеры команды передачи данных, арифметических, логических команд и сдвигов. Команды передачи управления.
- •10. Команды ассемблера. Цепочные команды и префиксы, команды ввода вывода команды управления мп.
- •11. Команды прерываний. Процедуры обработки прерываний. Особенности программирования
- •12. Прерывания dos и в108. Использование прерывания для ввода - вывода. Управления памятью. Запуск и завершение программ.
10. Команды ассемблера. Цепочные команды и префиксы, команды ввода вывода команды управления мп.
Строка последовательность байт или слов.
CLD - очищает флаг направления обработки строки (будут обрабатываться от меньшего адреса к большему)
STD - установка флага направления
RЕР/RЕРЕ/RЕРZ (префиксы) повтор: выполняет строковую операцию уменьшая каждый раз СХ пока СХ не станет = 0.
RЕРNЕ/REPNZ (prefix) repeat: используется для СМРS and SCAS - повторяются пока (СХ!=0 and ZF==0)
MOVSB - сору byte string ЕS:[DI]<=DS:[SI]. DI*DI+1, SI=SI+1 (или DI и SI уменьшаются если флаг направления =1)
MOVSXB - сору byte(word) with SF (sign) extension
МОVSXW - сору byte(word) with ZF(zero) extension
LODSB - copy string byte(word) into AL(AX) AL<=DS;[SI]: SI+=1
LODSW - АХ <= DS:[SI]; SI+=2;;
STOSB - store bytes(words) into string
Команды ввода/вывода:
IN port8 (or DX) input to AL(or AX) from I/O port byte: AL<= port word: AL<=[port]; AH[port+1]
OUT port8(or DX) output from AL (or AX) to I/O port byte: [port]<=AL [port+1] <=AH
команды управления МП:
CLC - очистка флага переноса (СF=0) СМС - инвертирование флага переноса STC - установка флага переноса (СF=1) CLD - очистка флага направления (в строковых командах будет автоинкремент адресов)
STD - установка флага направления (в строковых командах будет автоДЕкремент адресов)
CLI - запретить маскируемые прерывания STI - разрешить маскируемые прерывания НLТ – остановить процессор (выполняет NOPы пока не возникнет прерывание) WAIT/FWAIT - ждет завершения операции в сопроцессоре
11. Команды прерываний. Процедуры обработки прерываний. Особенности программирования
процедур обработки прерываний.
Прерывание – сигнал, заставляющий процессор прервать выполнение данной программы и перейти к другой. Прерывания могут быть вызваны процессором (внутренние) или (внешними) запросы от внешних устройств.
Внутренние прерывания.
IntТ генерируется командой int программное прерывание div 0 – ошибка деления на 0. trace – пошаговая компиляция. Int 0 при переполнении.
Прерывания нумеруют то 0 до 255 для каждого своя процедура прерывания и все эти процедуры включены в состав ОС.
Обработчик прерываний - программа предназначенная для обслуживания запросов от внешних устройств.
Прерывание представляет собой операцию, которая приостанавливает выполнение программ для специальных системных действий.
Команды вызова прерываний из программы:
INT type - выполняет программное прерывание (вызов системной функции)
PUSHF; IP=0 - запрет прерываний; ТF=0 - запрет отладки
PUSH СS; PUSH IP
IP= 0000:[type* 4]; СS = 0000:[(type* 4) + 2]
INTО type if Оf==Оv==1, then perform INT type - вызвать прерывание если переполнение.
IRET – возврат из прерывания.
РОР IP; РОР СS; РОРF
Возврат из процедуры прерывания
Процедура прерывания отличается от обычной процедуры способом выхода из процедуры. Для выхода из процедуры прерывания служит команда IRЕТ. Команда IRЕТ аналогична команды RET за исключением того, что она инкрементирует содержимое регистра SP (регистра указателя стека) на 4 лишние байта и восстанавливает сохраненные флаги и регистр FLAGS.
Схема обработки прерывания:
1 - в стеке сохраняется адрес текущей команды.
2-регистр флагов сохраняется в стеке,
3- флаг отладки сбрасывается.
4- запрещаются прерывания,
5- процессор извлекает из таблицы векторов прерываний IP=(N*4] и СS=[N*4+2],
6-команда IRET
Особенности:
1) процедура прерывания должна отработать быстро, иначе не во время обработаются
другие прерывания, что может привести к неправильной работе программ и устройств (например перехватив прерывание таймера и выполняя медленную процедуру)
2) процедура прерывания должна следить чтоб не было повторных вхождений (т.е. отключить прерывания в начале выполнения процедуры)
3) если нужно, то процедура прерывания должна передавать управление после себя старому обработчику прерывания.
INT 13H дисковые операции ввода-вывода – обеспечивает операции ввода-вывода для дискет и винчестера.
INT 14H управление коммуникационным адаптером - Обеспечивает последовательный ввод-вывод через коммуникационный порт RS232. Четыре типа операции, определяемые регистром АН выполняют прием и передачу символов и возвращают в регистре АХ байт состояния коммуникационного порта.
INT 16Н Ввод с клавиатуры.
INT 17Н Вывод на принтер - Обеспечивает вывод данных на печатающее устройство
Преревания DOS.располагаются в модуле IO.SYS и загружаются в память при загрузке DOSa (прерывания BIOS расположены в ПЗУ). Так как прерывания DOS обеспечивают большое количество разных дополнительных проверок, поэтому они проще в использовании и менее машинно-зависимы, чем их BIOS аналогии.
Прерывания DOS:
INT 20h завершение программы – завершает выполнение программы и передает управление в DOS.
INT 21h запрос функций DOS - основная операция DOS? Вызывающая определенную функцию в соответствии с кодом в регистре АН.
INT 27h завершение проги оставляющее её резидентной. Позволяет сохранить программу в памяти(резидентная прога)
Ниже приведены базовые функции для прерывания DOS INT 21h. Код функции устанавливается в регистре АН: 00 завершение проги (аналогично INT 20h);01 Ввод символа с клавиатуры с эхом на экран; 03 Ввод символа из асинх. коммуникационного канала; 04 Вывод символа на асинхронный коммуникационный канал.
