Команди переходів - студопедія

Команди переходів призначені для організації всіляких циклів, розгалужень, викликів підпрограм і т.д. тобто вони порушують послідовний хід виконання програми. Ці команди записують в регістр-лічильник команд нове значення і тим самим викликають перехід процесора не до наступної по порядку команді, а до будь-якої іншої команди в пам'яті програм. Деякі команди переходів передбачають надалі повернення назад, в точку, з якої був зроблений перехід, інші не передбачають цього. Якщо повернення передбачено, то поточні параметри процесора зберігаються в стеці. Якщо повернення не передбачене, то поточні параметри процесора не зберігаються.

Команди переходів без повернення діляться на дві групи:

команди безумовних переходів;

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

У позначеннях цих команд використовуються слова Branch (розгалуження) і Jump (стрибок).

Команди умовних переходів викликають перехід не завжди, а тільки при виконанні заданих умов. В якості таких умов зазвичай виступають значення прапорів в регістрі стану процесора (PSW). Тобто умовою переходу є результат попередньої операції, яка змінює значення прапорів. Всього таких умов переходу може бути від 4 до 16. Кілька прикладів команд умовних переходів:

перехід, якщо дорівнює нулю;

перехід, якщо не дорівнює нулю;

перехід, якщо є переповнення;

перехід, якщо немає переповнення;

перехід, якщо більше нуля;

перехід, якщо менше або дорівнює нулю.

Якщо умова переходу виконується, то проводиться завантаження в регістр-лічильник команд нового значення. Якщо ж умова переходу не виконується, лічильник команд просто нарощується, і процесор вибирає і виконує наступну по порядку команду.

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

Спільне використання декількох команд умовних і безумовних переходів дозволяє процесору виконувати розгалужені алгоритми будь-якої складності.

Команди переходів з подальшим поверненням в точку, з якої був зроблений перехід, застосовуються для виконання підпрограм, тобто допоміжних програм. Ці команди називаються також командами виклику підпрограм (поширена назва - CALL). Використання підпрограм дозволяє спростити структуру основної програми, зробити її більш логічною, гнучкою, легкою для написання і налагодження. У той же час треба враховувати, що широке використання підпрограм, як правило, збільшує час виконання програми.

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

Для повернення з підпрограми, викликаної командою переривання, використовується команда повернення з переривання (IRET або RTI). Ця команда витягує із стека збережене там значення лічильника команд і регістра стану процесора (PSW).

Схожі статті