-------
M1: MOV AX, CX
---------/-----------
Зауваження: команда, наступна за командою безумовної передачі керування, повинна мати мітку, інакше до неї не можна буде повернутися.
До командам безумовної передачі даних відносяться команди звернення до підпрограм, процедурам, і повернення з них. Процедура обов'язково має тип дальності і за замовчуванням тип процедури - NEAR, а FAR необхідно вказувати явно.
Proc FAR
-----/-------
PP endp
Процедура типу NEAR може бути викликана тільки з того кодового сегмента, в якому міститься її опис. Процедура типу FAR Може бути викликана з будь-якого сегмента. Тому тип виклику процедури (дальність) визначається наступним чином: головна програма завжди має тип FAR, т.к. звертаються до неї з ОС або відладчика, якщо процедур кілька, і вони містяться в одному кодовому сегменті, то всі інші, крім головної, мають тип NEAR (приклад 1). Якщо процедура описана в кодовому сегменті з іншим ім'ям, то у неї повинен бути тип FARі повинні бути використані директиви зовнішніх посилань (приклад 2).
Команда виклику процедури або підпрограми має вигляд: CALL <ім'я> ;
Адресація може бути використана як пряма, так і непряма. При зверненні до процедури типу NEAR в стеку зберігається адреса повернення, адресу команди, наступної за CALL, міститься в IP або EIP. При зверненні до процедури типу FAR в стеку зберігається повний адресу повернення CS: EIP. Повернення з процедури реалізується за допомогою команди RET Вона може мати один з наступних видів:
RET [n]; повернення з процедури типу NEAR, і з процедури типу FAR
RETN [n]; повернення лише з процедури типу NEAR
RETF [n]; повернення лише з процедури типу FAR.
Параметр n є необов'язковим, він визначає яка кількість байтів видаляється з стека після повернення з процедури.
Приклади прямого і непрямого переходу
У третьому випадку відбудеться помилка, якщо тип мітки, на яку передається керування, описаний нижче по тексту програми., тобто спочатку має бути опис, а потім використання.
Команди умовної передачі управління
Команди умовної передачі управління можна розділити на 3 групи:
команди, використовувані після команд порівняння
команди, використовувані після команд, відмінних від команд порівняння, але реагують на значення прапорів
JZ / JNZ
JC / JNC
JO / JNO
JS / JNS / JNP
команди, що реагують на початкове значення регістра CX.
У загальному вигляді команду умовної передачі управління можна записати так: <ім'я> Jx <мітка> ; <Коментар>
Тут х - це одна, дві, чи три букви визначають умови передачі управління. Мітка, зазначена в полі операнда, повинна відстояти від команди не далі ніж - 128? +127 Байт.
Приклади:
M1; передача управління на команду з міткою М1, якщо ZF=1
<...