Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции АСУ-ЭВТ 06 / L 7 Орг ЭВМ -циклы-ветвл-прер.doc
Скачиваний:
36
Добавлен:
10.12.2013
Размер:
116.22 Кб
Скачать

Организация ЭВМ и систем Щемелева Т.К.

Лекция 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]