Источники прерываний – внешние: нажатие на кнопку или любое другое внешнее событие, которое надо обработать.
Источники исключений – внутреннее событие, процессор вынужден их обработать и остановить выполнение операции.
Вектор обработки прерывания – структура данных, который сообщает, где находится источник операции прерывания.
Процедуры обработки прерываний – в них хранятся адреса процедур и адреса команд. Эти процедуры должны быть короткими. Они ставят прерывания в очередь для выполнения.
Использование прерываний для многозадачных систем: диспетчер, который выдает процессу время на обработку прерываний.
- невытесняющиеся. Обработка происходит в выделенное ей время. Приложение само знает сколько ему надо на обработку.
- вытесняющая. Все решает операционная система. Используется прерывание, т.к. иначе приложение остановить нельзя.
Метка |
Код операции |
Операнды |
Комментарии |
FORMULA: |
MOV |
EAX, I |
; регистр ЕАХ=1 |
ADD |
EAX, J |
; регистр EAX=I+J |
|
MOV |
N, EAX |
; N=I+J |
|
I |
DW |
3 |
; резервируем 4 байта и устанавливаем значение 3 |
J |
DW |
4 |
; резервируем 4 байта и устанавливаем значение 4 |
N |
DW |
0 |
; резервируем 4 байта и устанавливаем значение 0 |
Первый проход – составление таблицы символов.
Метка |
Код операции |
Операнды |
Комментарии |
Длина |
Счетчик адреса команд |
MARIA: |
MOV |
EAX, I |
EAX=I |
5 |
100 |
MOV |
EBX, J |
EBX=J |
6 |
105 |
|
ROBERTA: |
MOV |
ECX, К |
ECX=K |
6 |
111 |
IMUL |
EAX, EAX |
EAX=I*I |
2 |
117 |
|
IMUL |
EBX, EBX |
EBX=J*J |
3 |
119 |
|
IMUL |
ECX, ECX |
ECX=K*K |
3 |
122 |
|
MARILYN: |
ADD |
EAX, EBX |
EAX=H+J*J |
2 |
125 |
ADD |
EAX, ECX |
EAX=I*I+J*J+K*K |
2 |
127 |
|
STEPHANY: |
JMP |
DONE |
Переход к DONE |
5 |
129 |
Второй проход – составление объектного кода и таблицы символов.
В результате получаем объектный код и таблицу символов (внешние или глобальные метки).
Этапы компоновщика:
1. разрешает внешние ссылки: вместо неизвестной переменной ставит ее адреса.
2. переделает относительные адреса в абсолютные.
Статическое связывание, осуществляемое до запуска программы:
– не позволяет загружать дополнительные модули;
– не позволяет использовать одну процедуру различными программами.
Динамическое связывание осуществляется во время выполнения программы.
В многозадачных ОС существует рад задач, которые требуется реализовать для многих приложений (например, работа с окнами). Для таких задач имеет смысл создавать библиотечные функции.
Существует 2 методы связи с библиотечными функциями:
1. При статическом связывании функция компонуется вместе с программами. При этом при запуске нескольних приложений память загружается несколько раз одним и тем же кодом. При выходе новых версий библиотек нужно перекомпилировать все программы.
2. Динамическое связывание происходит во время запуска программы. При этом необходимо некоторое время на связывание, возникает ряд проблем с нахождением функции, связыванием разных версий и разных библиотек.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.