Команди передачі управління

Числа без знаку

Операнд "мітка переходу" або "близька мітка" відображає той факт, що мітка поміченої команди повинна знаходитися в межах поточного сегмента коду і на відносному відстані від команди переходу> -128 та <127 байтов. Ограничение –128:127 байтов снято у процессоров, начиная с модели 80386, однако ограничение передачи управления в пределах текущего сегментного кода действует и в моделях Пентиум.

Рішення про те, куди буде передано управління командою умовного переходу, приймається на підставі умови. Джерелами таких умов можуть бути:

будь-яка команда, яка зраджує стан арифметичних прапорів (нижче ці прапори будуть перераховані);

команда порівняння CMP.

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

Формат команди CMP:

CMPпріемнік, джерело або

Ця команда здійснює по суті віднімання операнд_1 - операнд_2 або приймач - джерело, однак результат нікуди не записує, а тільки встановлює прапори у відповідність до наведеної нижче таблиці.

Наведу приклади використання команд умовного переходу.

Покладемо, значення довжин сторін трикутника позначені a, b ИC і занесені в байтові змінні з такими ж іменами. Покладемо, що в програмі здійснюється перевірка значень сторін трикутника на предмет його ідентифікації: чи є трикутник зі сторонами a, b ИC рівностороннім, рівнобедреним або загального типу. Зауважимо, що сторони трикутника завжди приймають позитивні значення, тому в програмі потрібно застосовувати умовні команди групи "без знака. Наведу фрагмент схеми програми і відповідні команди на мові асемблера. Вузлом і міткою До позначені команди завершення програми. Оскільки поки ми не вивчили команд переривання для видачі повідомлень на екран дисплея, в наведеному фрагменті програми такі команди відсутні, але відзначені місця, де вони повинні бути вставлені.

тут помістити команди

НІ "трикутник рівносторонній"

NOT_EQABC: CMP AL, BL

.

тут помістити команди

ТАК "трикутник звичайний"

JMP K; перехід до До

тут помістити команди

Малюнок Фрагмент програми ідентифікації трикутника

Зверніть увагу! Команди порівняння та умовного переходу, набрані в наведеному вище фрагменті програми курсивом, реалізують функцію логічного І, а команди, набрані звичайним шрифтом, реалізують функцію логічного АБО.

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

Схожі статті