Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Команды передачи управления



Цель работы: изучить работу команд передачи управления, позволяющих организовать ветвления в программах и научиться использования этих команд в программах.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ.

Когда программа, написанная программистом, загружается в память, то команды хранятся в последовательно расположенных ячейках памяти, но редко исполняются по порядку. Все программы, за исключением прос­тейших, ' содержат переходы и вызовы подпрограмм (процедур), заставляю­щие микропроцессор изменять путь исполнения программы.

Команды передачи управления обеспечивают переход из одной части программы в другую. Эти команды можно подразделять на три группы: ко­манды безусловной передачи управления, команды условной передачи уп­равления и команды управления циклами. Эти команды ни на какие флаги не воздействуют.

КОМАНДЫ БЕЗУСЛОВНОЙ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

1.Команда вызова процедур (подпрограмм) CALL.Процедура представляет собой совокупность команд, написанных 1 раз, но может быть использована по мере необходимости в любом месте программы.

Формат команды CALL имя где имя - имя вызываемой процедуры (т.е. метка ее начала)

2.Команда возврата из процедуры RET (return-возврат). Команда RЕT заставляет микропроцессор 8086 возвратиться из процедуры в программу, вызвавшую эту процедуру. Команда RET должна быть последней командой процедуры, исполняемой микропроцессором.

3.Команда безусловного перехода JMP (jump unconditionally-перейти безусловно). Эта команда заставляет микропроцессор извлечь новую команду не из следующей ячейки памяти, а из какой-то другой.

Формат команды JMP имя где имя метка новой команды.

Обычно команда JMP используется для обхода группы команд, которым передается управление из другой части программы.

КОМАНДЫ СРАВНЕНИЯ ЗНАЧЕНИЙ ИСТОЧНИКА И ПРИЕМНИКА.

КОМАНДЫ УСЛОВНОЙ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

У микропроцессора Intel 8086 есть 17 различных команд, которые позволяют ему "принять решение" о ходе исполнения программы в зависи­мости от определенных условий., например, нулевого значения регистра или единичного значения флага переноса CF. Если такое условие выпол­нено, то микропроцессор выполнит переход; в противном случае он про­должит выполнение следующей команды программы. В качестве условия в таких командах используется состояние битов флагового регистра.

Для изменения состояния флагов, на основе которых команды усло­вной передачи управления принимают решение передавать или нет управ­ление используется команда СМР. Это - КОМАНДА СРАВНЕНИЯ ЗНАЧЕНИЙ ИСТОЧ­НИКА И ПРИЕМНИКА.

КОМАНДА СРАВНЕНИЯ ЗНАЧЕНИЙ ИСТОЧНИКА И ПРИЕМНИКА.

Команда СМР (compare-сравнить) имеет формат

СМР приемник, источник

Подобно команде вычитания SUB команда СМР вычитает операнд-источник из операнда приемника и в зависимости от результата устанавливает или обнуляет флаги. Но в отличие от команды SUB команда СМР не сохраняет результат вычитания, т.е. не изменяет операнды.

Результат исполнения команды СМР

Условие Флаги
OF SF ZF CF
Операнды без знака
Источник < приемник н н    
Источник = приемник н н    
Источник > приемник н н    
Операнды со знаком
Источник < приемник 0/1     Н
Источник = приемник н     Н
Источник > приемник 0/1     Н

Примечание: к - означает не имеет значения,0/1 означает, что флаг может быть равен 0 или 1 в зависимости от зна­чений операндов. Нельзя использовать в качестве приемника непосредственный операнд и сравнивать содержимое одной ячейки памяти с другой.

КОМАНДЫ УСЛОВНОЙ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

Команды условной передачи управления имеют такой общий формат I J*** близкая _метка где ***-мнемокод, состоящий из одной, двух или трех букв. Запись опе­ранда близкая _метка подчеркивает, что метка должна находиться не далее -128 или +127 байтов от команды условной передачи управления. В таблице, расположенной ниже, описаны некоторые команды услов­ной передачи управления и указаны условия, выполнение которых вызыва­ет переход.

команда Описание, условие перехода
JA Jump if above – перейти, если выше CF = 0 и ZF = 0
JAE Jump if above or equal – перейти, если выше или равно CF = 0
JB Jump if below – перейти, если ниже CF = 1
JBE Jump if below or equal – перейти, если ниже или равно CF = 1 или ZF = 1
JE Jump if equal – перейти, если равно ZF = 1
JNE Jump if not equal – перейти, если не равно ZF = 0

Командам условной передачи могут соответствовать любые команды, изменяющие состояние флагов, но обычно они используется совместно с командой сравнения СМР. Ниже показано, какими условными переходами надо пользоваться при воз­можных сочетаниях значений источника и приемника. Если после команды сравнения приемник больше источника, исполь­зует команду JA. Если после команды сравнения приемник больше источника или равен ему, используют команду JAE.

Если после команды сравнения приемник меньше источника, исполь­зуют команду JB. Если после команды сравнения приемник меньше источника или равен ему, используют команду JBE.

Если после команды сравнения приемник равен источнику, используют команду JE.

Если после команды сравнения приемник не равен источнику, используют команду JNE.

Для иллюстрации применения команд сравнения/условного перехода рассмотрим пример. Здесь показан фрагмент программы, размещающей в па­мяти два числа без знака в порядке возрастания, предполагается, что смещения адресов этих чисел в сегменте данных находятся в регистрах ВХ и DI соответственно. Учтите, что для перестановки двух чисел в памяти одно из них необходимо загрузить в регистр, так как микропроцессор не имеет команд пересылки типа память-память. Размещение двух чисел в порядке возрастания.

Этот фрагмент располагает два 16-битовых числа без знака в памяти в порядке возрастания: меньшее число заносится в ячейку с меньшим

;адресом.

MOV AX,[BX];Загрузить первое число в АХ

СМР АХ,[DI];сравнить его со вторым числом

JBE DONE;первое число меньше второго или равно ему?

XCHG АХ, [DI];если нет, обменяться значениями

MOV [ВХ], АХ

DONE:....

КОМАНДЫ УПРАВЛЕНИЯ ЦИКЛАМИ.

Команды управления циклами обеспечивают условные передачи управления при организации циклов. У микропроцессора 8086 регистр счетчика СХ служит счетчиком числа повторений циклов. Каждая команда управления циклами уменьшает содержимое регистра СХ на 1, а затем использует его новое значение для принятия решения о выполнении или невыполнении перехода. Основная команда этой группы LООР (lорр until count complete-повторять до конца счетчика) уменьшает содержимое регистра СХ на 1 и пе­редает управление операнду близкая метка, если содержимое регистра СХ не равно 0.

Например, для стократного выполнения определенной группы команд можно воспользоваться такой конструкцией

MOV СХ,100;Загрузить число повторений в СХ.

START:....;повторяемая группа

....;команд

LOOP START;если СХ не равен 0, перейти к метке

START,....;в противном случае выйти из цикла

Команда LOOP прекращает выполнение цикла только в том случае, когда содержимое регистр СХ уменьшено до 0.

КОНТРОЛЬНЫЕ ВОПРОСЫ:

1. На какие группы делятся команды передачи управления? Объясните, как используется каждая группа.

2.Назовите команду сравнения. На какие флаги она воздействует?

3.Как совместно используются команды СМР и условной передачи управ­ления? Назовите условия перехода и применяемую команду.

4.К какой группе команд можно отнести команды: a)LOOP; 6)JMP; в)JNE; г)JB; д)RЕТ e)CALL? мы в качестве регистра-источника в командах сравнения?

5.Какие операнды допустимы в качестве регистра-источника в командах сравнения?

ЗАДАНИЕ К СРС:

1.Подготовиться к ответу на контрольные вопросы.

3.Получить у преподавателя задание на написание программы с исполь­зованием команд передачи управления и проверить ее выполнение в программе-тренажере

.





Дата публикования: 2015-10-09; Прочитано: 1642 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...