
- •Лекция 7.Организация циклов и ветвлений в программах. Организация прерываний в эвм.
- •Основные вопросы:. . Команды передачи управления. Команды организации циклов. Организация прерываний в эвм.
- •7.1.Команды передачи управления
- •7.1.1.Команда безусловной передачи управления
- •7.1.2. Команды условной передачи управления
- •Inc [bx]
- •7.1.3.Команды организации циклов
- •7.2.Организация прерываний в эвм
- •7.2.2.. Команды прерываний и возврата из них.
Организация ЭВМ и систем Щемелева Т.К.
Лекция 7.Организация циклов и ветвлений в программах. Организация прерываний в эвм.
Новые понятия: ветвления и циклы в программе; передача управления; условия и команды передачи управления; метка команды; система прерываний; вектор прерываний; код прерываний; команда прерываний; код прерываний; обработчик прерываний; контроллер прерываний.
Основные вопросы:. . Команды передачи управления. Команды организации циклов. Организация прерываний в эвм.
7.1.Команды передачи управления
Позволяют изменять естественный (линейный) порядок выполнения программы. Это достигается изменением содержимого регистров процессора CS и IP, хранящих, напомним. адрес текущей команды программы. В регистры CS и IP загружается из кода команды передачи управления (перехода) адрес команды, которая должна выполняться следующей. Это или адрес команды, следующей в программе за командой передачи управления, или адрес команды, указанной меткой в команде передачи управления. Напомним, что метка - это имя, присвоенное программистом команде для ссылки на нее в программе. В инструкциях процессора метка заменяется на полный указатель команды перехода.
Существуют команды 2-х типов: безусловного перехода и условного перехода.
7.1.1.Команда безусловной передачи управления
Формат команды: JMP <метка>.
Команда безусловной передачи управления или безусловного перехода применяется для обхода следующих за ней по программе команд. При исполнении команды меняется содержимое регистров IP и CS, причем старое значение регистров теряется. Новое содержимое есть адрес перехода, соответствующий метке.
Фрагмент алгоритма программы с командой безусловного перехода представлена на рисунке 7.1
Пример фрагмента программы с командой безусловного перехода приведен меньше. На простом примере можно показать только организацию бесконечного цикла, например, сложения в программе:
MOV AL,[BX]
M1: ADD AL,25…
JMP M1
7.1.2. Команды условной передачи управления
Формат команды условной передачи управления или условного перехода:
J<условие> <метка>.
Если некоторое условие, сформулированное программистом, выполняется, то происходит передача управления по метке. Условие всегда вычисляется по результату операции выполняемой в АЛУ предшествующей команды. Используются при реализации ветвлений в алгоритмах (в основном после команд CMP, ADD, SUB,TEST). . При исполнении команды меняется содержимое регистров IP и CS, причем старое значение регистров теряется. Новое содержимое есть адрес перехода, полученный из соответствующей метки команды перехода, если условие выполнено. Иначе следующей будет выполняться не команда с меткой, а команда, последующая за командой перехода программе.
Применяемые условия можно разделить на 2 группы:
а). Флаги и их отрицания: S, NS, C, NC, Z, NZ, O, NO, P, NP.
б). Мнемокоды условий, основные из которых представлены в таблице 7.1..
Таблица 7.1
Результат сравнения 1-го и 2-го операндов предыдущей команды |
Мнемокод условия для чисел | |
Без знака |
Со знаком | |
Равны |
E |
E |
Больше |
A |
G |
Меньше |
B |
L |
Не равны |
NE(AB) |
NE(LG) |
Не больше |
NA (EB) |
NG(EL) |
Не меньше |
NB(EA) |
NL(EG) |
Примеры команд условного перехода и алгоритмы их исполнения:
Je M1 ;если два операнда команды, предшествующей командеJeM1,равны, то после командыJeM1 будет выполняться команда с меткой М1 (т.е. произойдет переход на команду с меткой М1). Иначе – следующая по порядку программы команда.
Jne M1 ;если два операнда команды, предшествующей командеJeM1,неравны, то после командыJeM1 будет выполняться команда с меткой М1 (т.е. произойдет переход на команду с меткой М1). Иначе – следующая по порядку программы команда.
Jp M1 ; если вb-коде результата предшествующей команды число двоичных разрядов, содержащих единицы, четное, то после командыJpM1 будет выполняться команда с меткой М1 (т.е. произойдет переход на команду с меткой М1). Иначе – следующая по порядку программы команда.
Мнемокоды наиболее часто используемых команд приведены в таблице 7.2.
Таблица 7.2.
-
Мнемоника
Формат
Комментарий
JA/JNBE
JA _метка
Перейти, если первый операнд больше второго
JAE/JNB
JAE _метка
Перейти, если больше или равно
JB/JBAE/JC
JB _метка
Перейти, если меньше
JBE/JNA
JBE _метка
Перейти, если меньше или равно
JCXZ
JCXZ _метка
Перейти, если CX=0
JE/JZ
JE метка
Перейти, если равно
JG/JNLE
JG _метка
Перейти, если больше
JGE/JNL
JGE _метка
Перейти, если больше или равно
JL/JNGE
JL _метка
Перейти, если меньше
JLE/JNG
JLE _метка
Перейти, если меньше или равно
JNC
JNC _метка
Перейти, если нет переноса
JNE/JNZ
JNE _метка
Перейти, если не равно
JNO
JNO _метка
Перейти, если нет переполнения
JNP/JPO
JNP _метка
Перейти, если нечетный
JO
JO _метка
Перейти, если перенос
JP/JPE
JP _метка
Перейти, если четный
JS
JS _метка
Перейти, если отрицательный
Здесь больше или меньше (A-above, B-below) относятся к беззнаковым операндам; больше или меньше (G-greater, L-lower) относятся к знаковым операндам.
Пример фрагмента программы с командой условного перехода:
СMP [BX], AL
JNE oper
MOV [SI], AL
oper: INC [SI]