
Лабораторная работа
Тема: Управляющие логические структуры высокого уровня в микропроцессоре і8086.
Цель работы: изучить способы организации структур высокого уровня в системе команд микропроцессора і8086, научиться составлять программы с использованием структур высокого уровня.
Оборудование: персональный компьютер.
Программное обеспечение: операционная система, программа отладчик для микропроцессора і8086.
1. Общие положения. Команды условных переходов.
При выполнении команды условного перехода проверяется некоторое условие, представленное текущим состоянием флажков, и в зависимости от удовлетворения условия переход осуществляется или нет. Эти команды позволяют проверить состояния всех арифметических флажков, кроме AF, а также ряд комбинаций состояния нескольких флажков. Если условие истинно, управление передается по адресу перехода путём прибавления к IP однобайтного знакового смещения, находящегося во втором байте команды, а если условие ложно, выполняется следующая по порядку команда. Следовательно, все условные переходы являются “короткими” и их диапазон перехода составляет ‑128 ÷ +127 байт. Многие команды условных переходов имеют две мнемоники, которые подчёркивают содержательный смысл проверяемого условия. Обычно условные переходы применяются после команды сравнения и позволяют проверить все отношения между знаковыми и беззнаковыми числами.
Термины “больше” и “меньше” относятся к знаковым числам, a “выше” и “ниже” - к беззнаковым. Например, число 0ВЕh "меньшее" и "выше" числа 37h. Общий формат команды : Jcc метка.
Таблица 1. Варианты команды Jcc
Код команды |
Реальное условие |
Условие перехода |
JA JBE |
CF=0 и ZF=0 |
Если выше Если не ниже и не равно |
JAE JNB JNC |
CF=0 |
Если выше или равно Если не ниже Если нет переноса |
JB JNAE JC |
CF=1 |
Если ниже Если не выше и не равно Если перенос |
JBE JNA |
CF=1 или ZF=1 |
Если ниже или равно Если не выше |
JE JZ |
ZF=1 |
Если равно Если ноль |
JG JNLE |
ZF=0 и SF=OF |
Если больше Если не меньше и не равно |
JGE JNL |
SF=OF |
Если больше или равно Если не меньше |
JL JNGE |
SF<>OF |
Если меньше Если не больше и не равно |
JLE JNG |
ZF=1 или SF<>OF |
Если меньше или равно Если не больше |
JNE JNZ |
ZF=0 |
Если не равно Если не ноль |
JNO |
OF=0 |
Если нет переполнения |
JO |
OF=1 |
Если есть переполнение |
JNP JPO |
PF=0 |
Если нет четности Если нечетное |
JP JPE |
PF=1 |
Если есть четность Если четное |
JNS |
SF=0 |
Если нет знака |
JS |
SF=1 |
Если есть знак |