КАТЕГОРИИ: Архитектура-(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 – Інструкції умовних переходів
CF – флаг переносу, SF – флаг знаку, OF – флаг переповнення, ZF – флаг нуля, PF – флаг парності
Дата добавления: 2015-04-25; Просмотров: 553; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |