Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Умовні переходи




Описані у попередньому розділі інструкції переходів – це тільки частина того, що вам потребується для написання корисних програм. В дійсності необхідна можливість писати такі програми, які можуть приймати рішення. Саме це можливо зробити за допомогою операцій умовних переходів.

Інструкція умовного переходу може здійснювати (чи ні) перехід на цільову (вказану в ній) мітку, в залежності від стану регістру флагів. Роздивимося наступний приклад:

 

mov ah,1; функція DOS вводу з клавіатури

int 21h; отримати наступну

; натиснуту клавішу

cmp al,’A’; чи була натиснута буква ‘A’?

je AwasTyped; якщо так то обробити її

mov [TampByte],al; ні, зберегти символ

.

.

AwasTyped:

push ax; зберегти символ у стекі

 

Спочатку у даній програмі за допомогою функції операційної системи DOS сприймається натиснута клавіша. Потім для зрівняння введеного символу з символом “А” використовується інструкція CMP. Ця інструкція аналогічна інструкції SUB, тільки її виконання ні на що не впливає, тому що призначення даної інструкції полягає у тому, щоб можна було порівняти два операнди, встановивши флаг також, як це робиться у інструкції SUB. Тому у попередньому прикладі флаг нуля встановлюється у значення 1 тільки у тому випадку, якщо регістр AL містить символ А.

Тепер ми підійшли до основного моменту. Інструкція JE представляє собою інструкцію умовного переходу, яка здійснює передачу керування тільки у тому випадку, якщо флаг нуля дорівнює 1. У протилежному випадку виконується інструкція, безпосередньо слідуюча за інструкцією JE (у даному випадку – інструкція MOV). Флаг нуля у даному прикладі буде встановлено тільки у випадку натиснення “А”, і тільки при цьому випадку процесор 8086 перейде до виконання інструкції з міткою AwasTyped, тобто інструкції PUSH.

Набір інструкцій процесора 8086 передбачає велику різноманітність інструкцій умовних переходів, що дозволяє вам здійснювати перехід майже по будь-якому флагу чи їх комбінації. Можна здійснювати умовний перехід по стану нуля, переносу, по знаку чи флагу переповнення і по комбінації флагів, вказуючи результати операцій зі знаками.

Перелік інструкцій умовних переходів приводиться у табл. 3.2.

 

Таблиця 3.2 – Інструкції умовних переходів

Назва Значення Флажки, що перевіряються
JNB/JNAE Перейти, якщо менш/ перейти, якщо не більш чи дорівнює CF=1
JAE/JNB Перейти, якщо більш чи дорівнює/ перейти, якщо не менш CF=0
JBE/JNA Перейти, якщо менш чи дорівнює/перейти, якщо не більш CF=1 чи ZF=1
JA/JNBE Перейти, якщо більш/ перейти якщо не менш чи дорівнює CF=0 та ZF=0
JE/JZ Перейти, якщо дорівнює ZF=1
JNE/JNZ Перейти, якщо не дорівнює ZF=0
JL/JNGE Перейти, якщо менш ніж/ перейти, якщо не більш ніж чи дорівнює SF=OF
JGE/JNL Перейти, якщо більш ніж чи дорівнює/ перейти, якщо не більш ніж SF=OF
JLE/JNLE Перейти, якщо менш ніж чи дорівнює/ перейти, якщо не більш ніж ZF=1 чи SF=OF
JG/JNLE Перейти, якщо більш ніж/ перейти, якщо не більш ніж чи дорівнює ZF=0 чи SF=OF
JP/JPPE Перейти по парності PF=1
JNP/JPO Перейти по непарності PF=0
JS Перейти по знаку SF=1
JNS Перейти, якщо знак не встановлений SF=0
JC Перейти при наявності переносу CF=1
JNC Перейти при відсутності переносу CF=0
JO Перейти по переповненню OF=1
JNO Перейти при відсутності переповнення OF=0

 

CF – флаг переносу, SF – флаг знаку, OF – флаг переповнення, ZF – флаг нуля, PF – флаг парності




Поделиться с друзьями:


Дата добавления: 2015-04-25; Просмотров: 529; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.