І Команди безумовних переходів 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

І Команди безумовних переходів



Команда JMP здійснює перехід у будь-яке місце програми розташовану як у поточному програмному сегменті, так і в іншому сегменті.

П-д: виконати безумовний внутрисегментний перехід: JMP NEAR LABEL

або JMP LABEL/

JUMP NEAR – (стрибок недалеко) здійснює перехід до виконання команди, перша з яких позначена меткою LABLE, яка знаходиться у поточному сегменті кодів, тобто у межах 64 Кбайт. При переході у межах сегмента змінюється зміст ІР.

П-д: виконати безумовний між сегментний перехід: JMP FAR LABEL.

JMP FAR – (стрибок далеко) здійснює перехід до виконання команд, перша з яких позначена міткою LABLE. Ця мітка знаходиться у межах пам’яті об’ємом 1 Мбайт.

У міжсегментном переході змінюється ІР та зміст сегментного регістру кодів СS.

Команди умовних переходів

Здійснюють передачу управління в залежності від результатів попередніх операцій.

Виокремлюють наступні види умовних переходів, які використовуються для встановлення відношень чисел зі знаком, без знаку та довільних чисел.

ІІ Команди виклику підпрограми та повернення до підпрограми

CALL – дозволяє викликати підпрограму, яка розташована як у поточному програмному сегменті тик і у інших областях пам’яті. Змінюється значення ІР або ІР та СS також як і у команді JМР, але перед цим відбувається автоматичний запис у стек поточних значень цих регістрів, що забезпечує запам’ятовування

точок повернення з підпрограми.

RET – використовується для повернення з підпрограми. Під дією цієї команди відбувається передача управління за адресою повернення, яка занесена до стеку при виконанні команди САLL.

П-д: викликати підпрограму, яка розташована в деякому місці пам’яті об’ємом 1 Мбайт за адресою NАМЕ:

CALL FAR NAME;виклик підпрограми за адресою NАМЕ.

ІІІ Команди циклів

Команди циклів служать для зручності виконання обчислювальних циклів:

LOOP (цикл, поки CX≠0)

LOOP NZ/LOOP NE (цикл, поки не 0/ не дорівнює)

LOOP Z/LOOP E (цикл, поки 0/дорівнює)

JCXZ (перехід по нулю у CX).

П-д: виконати послідовність команд 100 разів.

Необхідно занести у регістр CX кількість повторень

MOV CX,100

Далі записується послідовність команд, перша з яких починається з мітки М1

М1: <послідовність команд >

LOOP M1

Ця команда зменшує вміст CX на 1, а далі порівнює його з 0, якщо CX≠0, здійснюється перехід до виконання команди з міткою М1; якщо СХ=0 – виходимо з циклу і виконуємо наступну команду за LOOP.

До циклу відносяться:

LOOP E M1 (loop if equal – якщо дорівнює)

LOOP NE M1 (loop if not equal – якщо не дорівнює).

ІV Команди переривання

МП і8086 може обробляти 256 типів переривань. За командою ІNТ процесор переходить до виконання програми обслуговування переривання вказаного типу, причому автоматично виконуються дії необхідні для забезпечення повернення у точку переривання: зміст регістра прапорців F записується у стек (PUSH F), скидаються прапорці ІF та ТF (IF=TF=0), поточні значення регістрів SС та ІР записуються у стек (SС→стек, стек←ІР).

Для визначення початкової адреси програми обслуговування потрібного типу існує таблиця рівній переривань. Для кожного з 256 рівній переривань у цій таблиці відведено 4 байти. Перші 2 байти визначають значення ІР- вказівник команд, інші 2 байти визначають значення SС – сегментний регістр. Початкова адреса програми обслуговування записується у комірки пам’яті 0-3FFH.

INTO – команда переривання при переповненні, коли значення OF=1 (type=4) ця команда використовується після арифметичних команд над числами зі знаком.

IRET – ставиться у кінці кожної програми обслуговування переривання і забезпечує повернення з переривання. По цій команді МП стягує зі стеку значення IP та CS, встановлює значення регістру прапорців F за командою POP F.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 161; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.234.83 (0.005 с.)