- •Организация и функционирование вычислительных машин
- •Раздел 1. Основные понятия архитектуры и организации эвм. 3
- •Раздел 2. Организация процессора и основной памяти вм 7
- •Раздел 3. Организация памяти в эвм 35
- •Раздел 4. Организация системы ввода-вывода в эвм. 51
- •Раздел1.Основныепонятия архитектуры и организации эвм. Состав электронной вычислительной машины (эвм)
- •Принцип программного управления и машина фон Неймана
- •Понятие архитектуры, организации и реализации эвм
- •Многоуровневая организация эвм.
- •Понятие семантического разрыва между уровнями
- •Организация аппаратных средств эвм
- •Типовая структура вм на микропроцессорных наборах
- •Раздел 2. Организация процессора и основной памяти вм
- •Типовая структура процессора и основной памяти
- •Основной цикл работы процессора
- •Организация процессора и памяти в микропроцессоре Intel 8086
- •Организация стека процессора
- •Распределение оперативной памяти в i8086, ms dos
- •Организация выполняемых программ в ms dos
- •Режимы адресации памяти в микропроцессоре Intel 8086
- •5. Адресация по базе
- •6. Косвенная адресация с масштабированием
- •7. Адресация по базе с индексированием и масштабированием
- •Система команд i8086
- •3DNow! от amd
- •Организация прерываний в процессоре Intel 80x86
- •Управление выполнением команд в эвм.
- •Способы формирования управляющих сигналов.
- •Простейшая схема формирователя управляющих сигналов
- •Способы кодирования микрокоманд.
- •Компьютеры с сокращенным набором команд.
- •Арифметические особенности risc процессоров.
- •Раздел 3. Организация памяти в эвм
- •Основные среды хранения информации.
- •Виды запоминающих устройств.
- •Память с произвольной выборкой.
- •Постоянные запоминающие устройства.
- •Ассоциативные запоминающие устройства (азу)
- •Иерархическая система памяти
- •Организация памяти типа кэш.
- •Организация структуры основной памяти в процессорах ix86.
- •Организация виртуальной памяти.
- •Организация виртуальной памяти на i386 и более старших моделях.
- •Организация работы с внешней памятью.
- •Организация работы с файлами на дисках в ms-dos.
- •Раздел 4. Организация системы ввода-вывода в эвм.
- •Архитектура систем ввода-вывода.
- •Способы выполнения операции передачи данных
- •Структуры контроллеров внешних устройств, для управления различными режимами передачи данных.
- •Программные средства управления вводом-выводом.
- •Основные компоненты процедуры управления ввода-вывода общего вида
- •Состав и реализация устанавливаемого драйвера символьного типа
- •Литература
- •Краткое введение в язык ассемблера.
- •1. Директивы задания данных
- •2. Директивы сегментации программы
- •3. Директивы группирования.
- •4. Порядок размещения сегментов.
- •5. Директивы ограничения используемых команд.
Организация прерываний в процессоре Intel 80x86
Механизм асинхронного взаимодействия процессов, одновременно выполняемых в вычслительной системе и еще один способ вызова подпрограмм. Весь программный интерфейс с операционной системой реализуется именно на основе прерываний.
Прерывания: | |
Программные: |
Аппаратные: |
Исключения |
Прерывания от внешних устройств |
Прерывания от внешних устройств |
|
Исключениявозникают при выполнении некой команды в процессоре; они подразделяются на ошибки, ловушки, и остановы.
Ошибкапоявляется до выполнения команды (например, если такой команды не существует или происходит обращение к некоторой привилегированной функции или области данных). Адрес возврата в этом случае указывает на ошибочную команду.
Ловушка- прерывание, возникающее после выполнения команды (например, для организации пошагового выполнения команд). Адрес возврата указывает на следующую команду.
Останов- ситуация с неопределенным результатом. Возврат может вообще не происходить.
Большинство программных прерываний типа
INTn
являются ловушками.
Аппаратные прерывания- прерывания, возникающие асинхронно от внешних устройств, которые обслуживаются в зависимости от приоритета и обрабатываются контроллером прерывания (микросхема 8259).
Прерывания низкого уровня.
Диапазон значений номеров вектора прерывания
NВП=0..1Fh
прерывания от схем процессора 00..07 (0- деление на ноль; 1- пошаговый режим; 2- немаскируемое прерывание; 3- точка останова; 4- прерывание по переполнению; 5- печать содержимого экрана, либо прерывание по команде BAUND; 6- прерывание по отсутствию команды; 7- прерывание по отсутствиюFPU).
прерывания от контроллера 8259 8..0Fh(8- системный таймер; 9- клавиатура; 0Ah- обслуживание видеоадаптера; 0Eh- обслуживание жесткого диска).
прерывания BIOS0Ah..1Fh(0Ah- обмен данными с дисплеем; 0Bh- возвращение объема памяти; 0Ch- обмен данными с диском; 0Dh- последовательный порт ввода вывода и т.д.).
Прерывания среднего уровня.
NВП=20h..5Fh
(21h- большая часть работы с файлами, управление задачами, выделение и освобождение памяти, работа с виртуальной памятью).
Прерывания пользователей.
NВП=60h..7Fh
(от 70hиспользуются для различных устройств).
Прерывания языков высокого уровня.
NВП=80h… и более
Уровни приоритета.
IRQ0..IRQ15- контролируются и выполняются с помощью контроллера 8259. Самый высокий уровень приоритета уIRQ0.
IRQ0- системный таймер;
IRQ1- клавиатура
IRQ2- размножитель приоритетных уровней;
8- часы реального времени;
9- прерывание обратного хода луча и звуковой карты;
10- 12- резерв;
13- ошибка FPU;
14 и 15- от контроллеров жесткого диска IDE1,IDE2.
IRQ3- COM2 (INT 0Bh);
IRQ4- COM1 (INT 0Ch);
IRQ5- не используется (INT0Dh);
IRQ6- прерывание от магнитного диска (INT0Eh);
IRQ7-LPT1 (INT0Fh).
Маскируемые прерывания.
Запрет от прерывания выполнения критичной части программы или для маскирования долго выполняемых прерываний.
Способы реализации.
1) общее маскирование
CLI,STI- устанавливают флаг прерыванияIFв 0 и единицу соответственно.
2) Выборочное маскирование.
Засылка определенного кода в регистр маски контроллера 8259. В этом контроллере три основных регистра.
IRR- регистр запроса прерывания регистр ;
ISR- регистр обслуживания прерывания (порт 20h);
IMR- регистр маскирования прерывания (порт 21h);
moval, 01000000b; маскируются запросы прерывания от жесткого диска
out 21h
------
mov al, 0
out 21h
К IRRподключены все линииIRQ0..IRQ15.ISRхранит приоритет текущего обслуживаемого процесса. Происходит сравнениеPRIRRиPRISR, запросIRRне должен быть маскирован.
Разработка собственных прерываний
Причины: необходимость создания собственной подпрограммы резидентной в памяти и доступной из любой программы; необходимость дополнения существующих прерываний; использование холостых прерываний, телом которых является IRET.
Существует два способа заполнения вектора прерывания адресом своего обработчика.
- Низкоуровневый: командой movзаписать по адресу вектора сегмента и смещения обработчика.
- Используя средства операционной системы: функции 25 и 35 int21hпозволяют устанавливать новое и получать старое значение адреса обработчика вектора прерывания.
Пример:N=60
Data Segment
old_cs dw 0; буфер для хранения
old_ip dw 0; старый ВП
---------
old_vp dd 0;
Data ENDS
Code Segment
;сохранение адреса старого обработчика
mov ax, 3560h
int 21; ВП_cses, ВП_ipbx
mov old_cs, es
mov old_ip, bx
;задание адреса нового обработчика в ВП 60h
push ds
mov dx, offset New_sub
mov ax, seg New_sub
mov ds, ax
mov ax, 2560h
int 21h
pop ds
;новый обработчик прерывания 60h
New_sub proc far
push ax
; тело обработчика
pop ax
mov al, 20
out 20h
iret
---------
Final EQU $
---------
New_sub ENDP
;восстановление старого ВП
lds dx, DWORD PTR OLD_CS
mov ax, 2560h
int 21h
Возможные проблемы:
если данные передаются через память, нужно тщательно следить за содержимым регистра ds. Лучше данные передавать через регистры или стек;
если возможно прерывание обработчика через Ctrl+Break, необходимо предусмотреть восстановление адреса старого обработчика;
требуется минимизировать код обработчика прерывания, т.к. на время его выполнения может быть запрещено выполнение других прерываний.
Перекрытие обработчика прерываний.
Можно записать существующий обработчик по новому адресу, а на старый номер- свой, который может вызывать старый. Существующие обработчики прерываний DOSиBIOSсложно поддаются модификации на уровне исходных кодов и для добавления новых функций требуется реализовать следующий механизм:
создать новый обработчик прерываний (реализующий дополнительные функции), который вызывает старый (системный), размещенный по новому неиспользованному вектору в диапазоне 60h..70h;
перенести старый обработчик прерываний в новый вектор прерывания;
изменить вектор прерывания с системным номером таким образом, чтобы но указывал на новый обработчик прерывания;
завершить программу установки нового обработчика и оставить ее резидентной в памяти.
Возврат после завершения старого обработчика может происходить либо в новый обработчик
pushf
callold_handler; дополнительные функции после старого обработчика
либо в вызывающую процедуру
jmpcs:old_handler; дополнительные функции до старого обработчика
Разработка резидентных обработчиков прерываний.
TSR(TerminateandStayResident)
int27h- более старая версия;
int21h- более новая. мама
Резидентный обработчик обычно пишется в виде модуля типа comи для его разработки необходимо:
наличие свободного вектора прерывания и указание метки конца обработчика для int27h(определение длины обработчика +100PSP);
для int31hдлина обработчика задается параграфами.
Для минимизации длины кода обработчика инициализирующую его часть выносят за его предел.
Cod_s Segment
Begin: jmp short set_up; переход на инициализацию
Rezid_h: proc far
push ds
;тело процедуры обработчика прерывания
pop ds
iret
Final EQU $; текущее значение счетчика размещения
Rezid_h ENDP
Set_up: mov dx, offset Rezid_h
mov ax, 2568h; задание свободного ВП с №68h
int 21h
;завершение с оставлением в памяти
lea dx, Final
int 27h
ret
Cod_s ENDS