Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТ МП.doc
Скачиваний:
187
Добавлен:
10.02.2016
Размер:
5.13 Mб
Скачать

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

Команди умовних переходів (розгалужень) Bccмають 14 варіантів, які відрізнюються умовами. Якщо зазначена в команді умова виконується, то програма переходить на команду, адреса якої формується стосовно вмісту програмного лічильникаРС, як укоманді BRA;якщо – ні, то виконується наступна за командою умовного переходу команда. Як умови розгалуження використовуються 14 різних значень ознакN, Z, C, Vта їхніх комбінацій. У багатьох випадках розгалуження програм виконується залежно від результату порівняння двох операндів за допомогою команди порівняння знакових та беззнакових чисел:CMP, CMPA, CMPI, CMPM, TST та ТАS.

Порівняння операндів відбувається за їхнього віднімання згідно з табл. 12.2, внаслідок чого встановлюються ознаки N, Z, V, C.Сам результат не зберігається і значення операндів не змінюються.

Окремі команди дозволяють порівнювати операнд, що адресується ЕА, із вмістом регістра даних (команда СМР), регістра адреси (команда СМРА), безпосереднім операндом (команда СМРІ).Команда СМРМвикористовується задля порівняння розташованих у пам’яті елементів двох масивів операндів,команди тестування TST та TASє однооперандними варіантами команд порівняння.

Таблиця 12.2 – Команди порівняння та тестування

Синтаксис Асемблера

Розрядність

Операції

Адресування

CMP <EA>,Dn

CMPA <EA>,An

CMPI #Im,<EA>

CMPM (Ay)+,(Ax)+

B, W, L

W, L

B, W, L

B, W, L

Dn – <scr>

An – <scr>

<dst> – Im

<dst> – <scr>

<scr> – усі,Dn– регістрове

<scr> – усі,An– регістрове

Im – безпосереднє,

<EA> – регістрове,

непряме регістрове

з усіма модифікаціями

або пряме, коротке чи довге

Обидва операнди подаються

з постінкрементуванням

TST <EA>

TAS <EA>

B, W, L

8

<dst> – 0

<dst>–0;1b7

Регістрове або непряме

регістрове

з усіма модифікаціями

Регістрове або непряме

регістрове

з усіма модифікаціями

При виконуванні цих команд встановлюються ознаки N, Z, відповідно зі знаком і значенням (дорівнює чи не дорівнює 0) операнда, що адресуєтьсяЕА.Команда TASпісля тестування встановлює у 1 старший біт операндаb7. Виконання цієї команди не можна перервати запитанням прямого доступу до пам’яті.Команда TASвикористовується у мультипроцесорних системах задля встановлення семафора – спеціального біта, який дозволяє чи забороняє різним МП доступ до окремих блоків спільної пам’яті.Команда СМР2є властива тільки МПМС68020, вона перевіряє перебування операнда у регістрі даних або адреси в регістрі адреси у зазначених в команді межах. Нижня границяLBобирається з комірки з адресоюЕА, верхняUB– з наступної. Якщо операнд дорівнюєLBабоUB, тоZ= 1, якщо не дорівнює, тоZ= 0. Якщо операнд перебуває у заданих межах,С= 0, якщо виходить, тоС= 1.

Рівність операндів визначається залежно від значення ознаки Z: умовиEQтаNE. Якщо порівнюються числа без знаку, то їхні відносні значення: вище (>), вище або дорівнює (>=), нижче (<), нижче або дорівнює (<=) – визначаються відповідно з умовамиHI, HS, LO, LS. Як мнемокоди умов “вище або дорівнює” (HS) та нижче (LO) можна використовувати відповідноССтаCS.

Якщо порівнюються числа зі знаком, їхні відносні значення визначаються умовами GT, GE, LT, LE. Решта умов визначається знаком результату (PL, MI) та наявністю або відсутністю переповнення (VS, VC). Слід зауважити, що процесорМС680х0 не встановлює прапорець парності чи непарності кількості одиниць у результаті, який достатньо широко використовується, наприклад, при перевірці результату в обчислювальній техніці. Тому нижче наводиться підпрограма штучного формування цієї ознаки.

У запис команд умовного переходу мовою Асемблер мнемокод відповідної умови вводиться замість символу cc. Наприклад, B + EQ = BEQ– мнемокод команди розгалуження, якщо операнди дорівнюють один одному;B + MI = BMI– мнемокод команди розгалуження за від‘ємного результату. Види умов, які використовуються у командах розгалужень, наводяться в табл. 12.3.

Таблиця 12.3 – Види умов

Символи мови

Умова, що перевіряється

Значення ознак

NE

Не дорівнює (ненульовий результат)

Z = 0

EQ

Дорівнює (нульовий результат)

Z= 1

HI

Вище

C + N= 0

LS

Нижче або дорівнює

C + N= 1

HS (або СС)

Вище або дорівнює (перенесення немає)

С= 0

LO (або CS)

Нижче (перенесення є)

С= 1

GE

Більше або дорівнює

NV= 0

LT

Менше

NV= 1

PL

Результат додатний

N= 0

MI

Результат від’ємний

N= 1

GT

Більше

Z + (NV) = 0

LE

Менше або дорівнює

Z + (NV)= 1

VC

Переповнення немає

V= 0

VS

Переповнення є

V= 1

T

Розгалуження є

1

F

Розгалуження немає

0

Умови ТтаFвикористовуються у складікоманд DBF– безумовне виконання заданої кількості циклів таDBT – безумовний вихід з циклу.