- •7. Упрощенные директивы определения сегментов.
- •8. Организация и использование стека.
- •10. Организация обслуживания прерываний. Типы прерываний. Таблица векторов прерываний.
- •11. Подпрограммы. Передача параметров. Ближние и дальние процедуры.
- •15. Организация циклов, условных и безусловных переходов
- •17. Обработчики прерываний и резидентные программы.
- •19. Интерфейс модулей, написанных на языке ассемблера с модулями, написанными на языке с.
15. Организация циклов, условных и безусловных переходов
Безусл. переходы в асм. осущ. с помощью команды jmp mylabel; mylabel - метка куда перейдет. jmp - исп-ет 16 битное смещение элементов если задать. mov bx,wl;---jmp bx- преходпо содержимому регистра bx. jmp [wl] - аналогично. jmp можно использовать для перехода в другой сегмент но нужно делать перегрузку cs:ip. Сущ сл. переходы:1)типа short (короткий переход) — если адрес перехода находится в пределах от -127 до +128 байт от команды JMP; 2) типа near (ближний переход) — если адрес перехода находится в том же сегменте памяти, что и команда JMP; 3)типа far (дальний переход) — если адрес перехода находится в другом сегменте. Дальний переход может выполняться и в тот же самый сегмент, если в сегментной части операнда указано число, совпадающее с текущим значением CS; 4)переход с переключением задачи — передача управления другой задаче в многозадачной среде.
Условные переходы осущ. переход по заданному адресу в случае выполнения условия, задаваемого состоянием флагов процессора.
Код команды Реальное условие Условие для CMP
JA CF = 0 и ZF = 0 если выше
JNBE если не ниже или равно
JAE если выше или равно
JNB CF = 0 если не ниже
JNC если нет переноса
JB если ниже
JNAE CF = 1 если не выше или равно
JC если перенос
JBE CF = 1 и ZF = 1 если ниже или равно
JNA если не выше
JE ZF = 1 если равно
JZ если ноль
JG ZF = 0 и SF = OF если больше
JNLE если не меньше или рав
JGE SF = OF если больше или равно
JNL если не меньше
JL SF <> OF если меньше
JNGE если не больше или равн
JLE ZF = 1 и SF <> OF если меньше или равно
JNG если не больше
JNE ZF = 0 если не равно
JNZ если не ноль
JNO OF = 0 если нет переполнения
JO OF = 1 если есть переполнение
JNP PF = 0 если нет четности
JPO если нечетное
16. Мультимодульные программы.
Рассмотрим пути создания программ из нескольких модулей.
Каждый компилируется по отдельности, затем компоновщик объединит в одну программу.
3 директивы:
• public
• extrn
• global
public [язык] метка [, [язык] метка…]
Определяет метки программы, которые будут доступны в других программах.
.data
public my_equ, my_var
my_equ equ 25
my_var dd 12345678h
.code
public my_proc
my_proc proc …
extrn определение [, определение…]
определение = [язык] метка:тип[:количество повторений]
Определяет какие метку будут взяты из другого модуля.
Тип: ABS (константа), BYTE, WORD,…, FAR, NEAR, PROC
global определение [, определение…]
Объединяет функции public и extrn.
.data
global my_out:dataptr, my_in:word …
my_in dw 10
.code
global my_out_code:near, my_in_code:far
my_in_code proc far …
call my_out_code
…
17. Обработчики прерываний и резидентные программы.
Посредством прерывания работы микропроцессора можно приостанавл. работу текущей программы и осущ. запуск другой программы.Прерывания: 1)Внешние;2)Внутренние. Каждому прерыв. ставятся в соотв. 4-х байтный вектор с номером 0<n<255. Все векторы можно размещать по порядку в младш. килобайте памяти. Любой из них задает точку входа или старт адрес программы для обслуж. треб ситуации. В виде сегмент. прогр:смещ. прогр. Внешн прер. вызываются на входе INTR(запрос маскируемого прерывания и на NMI(немаскер. прерывание). Если признак I в регистре флаг = 0, сигнал на входе INTR не распознается и прерывание не происх. При I=1 и налич сигнала INTR возник маскируемое прерывание. Действие кот. будет при этом выполн.: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)Прерванная программа продолж. свое выполнение.
Внутренне прерывание возникает либо при появлении некоторых микро сигналов внутри микропроцессора либо по команде внутри программы
+cм 18