Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4.doc
Скачиваний:
0
Добавлен:
29.12.2019
Размер:
162.82 Кб
Скачать

Лабораторная работа

Тема: Управляющие логические структуры высокого уровня в микропроцессоре і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

Если есть знак