Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KpiYap.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
117.51 Кб
Скачать

10. Организация обслуживания прерываний. Типы прерываний. Таблица векторов прерываний.

Посредством прерывания работы микропроцессора можно приостанавл. работу текущей программы и осущ. запуск другой программы.Прерывания: 1)Внешние;2)Внутренние. Каждому прерыв. ставятся в соотв. 4-х байтный вектор с номером 0<n<255. Все векторы можно размещать по порядку в младш. килобайте памяти. Любой из них задает точку входа или старт адрес программы для обслуж. треб ситуации. В виде сегмент. прогр:смещ. прогр. (Вектор прерывания - адрес!!!) Внешн прер. вызываются на входе INTR(запрос маскируемого прерывания и на NMI(немаскер. прерывание). Если признак I в регистре флаг = 0, сигнал на входе INTR не распознается и прерывание не происх. При I=1 и налич сигнала ШТЕК возник маскируемое прерывание. Действие кот. будет при этом выполн.:1) На вход INTR - поступ. запрос прерывание;2) Послед. действия определ. допустимой ситуацией:а) ожид. завершение текущей команды; б)-||- сл. команды;в) запрос обраб во время вып. текущей команды.---В нек случаях сигнал INTR распазн только при б).--Имеются 2 случ. когда в): 1..При строковых командах с повторением.2.. При вып. команды wait. 3) Микропроц. выраб. 2 сигнала подтверждения INTX. 4) По шине адресов/данных в микропроц. передается байт с номером n прерываний. 5) Текущее содерж. регистра признаков и регистра CS и IP загруж. в стек. В стек загруж. IP соответ. смещениюкоманды перед которой возникло прерыв. 6) Признаки I,T сбрасываются в 0.7)В CS:IP загруж. содержимое вектора n. 8) Выполн. программа обработки прерывания. 9) В конце обработки прерыв. команда iret восстан. знач. регистра IP,ES и FL.10)Прерванная программа продолж. свое выполнение.

Внутренне прерывание возникает либо при появлении некоторых микро сигналов внутри микропроцессора либо по команде внутри программы

11. Подпрограммы. Передача параметров. Ближние и дальние процедуры.

Подпрограммы на asm выз-ется командой call при этом выполн. сл. действия: -1-в стеке сохр. адрес сл. после call команды (для мал. моделей только регистр IP, большие – CS:IP).-2-В регистр CS:IP для больших моделей или IP загр. адрес точки входа в подпр.-3- посл. командой подпрогр. должна быть команда ret она загр. из стека адрес сл. после call команды. my_proc PROC – имя процедуры---my_proc ENDP. Для передачи параметров исп. 2 способа: - через регистр; - через стек; Также можно передавать копию аргумента или адрес аргумента. Команда CALL имеет 4 модификации: - вызов прямой ближний(в пределах текущего программного сегмента – near ptr):call near ptr proc1;- вызов косвенный ближний(word ptr): mov bx,offset proc1---call [bx];- прямой дальний вызов(вызов процедуры, расположенной в другом сегменте кода – far ptr): call far ptr proc1; - вызов косвенный дальний(dword ptr): adr dd proc1---call DS:adr(или call dword ptr adr).

.model small

.stack 100h

.code

start:

mov ax,12h

mov bx,2

call my_convert

mov ch,4ch

int 21h

my_convert PROC

push cx

……….

pop dx

pop cx

ret

my_convert endp

end start

12. Повторяющиеся блоки и макросы.

Чтобы не запис. в программе часто повт. фрагмент, рекоменд. хранить ее в именованном МАКРОСЕ и потом исп. его имя всякий раз, когда этот код потр. Макроопределение – это группа команд, которая должна вставляться в текст вместо макрокоманды. Макрокоманда – задает имя макроопределения, которое определяет, какую группу команд, в какое место программы необх. поместить и какие аргументы должны исп-ся вместо параметров. Макрорасширение –группа команд, реал. макроопределение, в котором парам. заменены на адреса конкр. переменных. Макроопр. имеет сл. вид: <имя макроса> MACRO <формальные параметры через запятую>---<тело макроса>---ENDM. Макрокоманда запис сл. обр. <имя макро>/<параметр>,…/. При написании макроопределений необходимо, чтобы метки в программе были уникальными. Для этой цели в языке имеется директива – local. LOCAL d1,d2,…; формальные параметры. Директива LOCAL позволяет объявить метку локальной и сгенерировать для нее уникальное имя вида: ??0000, ??0001 и т.д.

Swap MACRO w1,w2

push [word w1]

push [word w2]

pop [word w1]

pop [word w2]

ENDM

.data

val1 dw 15

val2 dw -7

. code

……….

swap val1, val2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]