- •Безумовний перехід
- •Умовний перехід
- •Формат регістру прапорців.
- •If (Interrupt Flag) – прапорець переривання. Якщо стан цього прапорця нульовий, переривання заборонені, якщо одиничний – дозволені (керує тільки маскованими апаратними перериваннями).
- •Команди переходу для беззнакових даних.
- •Команди переходу для знакових даних
- •Спеціальні арифметичні перевірки
- •Ссув та циклічний ссув розрядів
- •Очищення екрану.
- •Склад макрокоманд (макросів)
Умовний перехід
Умовний перехід є процесом з двох частин: спочатку перевіряється умова, потім, якщо умова виконується, реалізується перехід; якщо умова не виконується, реалізується наступна команда.
КОМАНДИ УМОВНОГО ПЕРЕХОДУ виконують передачу керування в залежності від результата виконання попередньої команди.
Команди умовного переходу використовують єдиний операнд, що містить адресу (мітку) на яку повинен бути виконаний перехід. Відстань від команди переходу до заданої адреси не повинна перевищувати 128 байт (перехід типу SHORT).
Команди умовного переходу використовують стан одного або декількох прапорців (вміст регістра прапорців) в якості ознаки виконання або не виконання умови переходу. Таким чином, будь яка команда, що встановлює прапорці по деякій умові, може бути використана в якості команди перевірки умови. Частійше інших для цього використовуються команди CMP і TEST. Командою переходу може бути будь яка команда з 31 команди умовного переходу.
РЕГІСТР ПРАПОРЦІВ. Регістр прапорців зберігає у вигляді бітових ділянок деякі результати виконання команд (ознаки нульового, від’ємного результату, переповнення розрядної сітки та ін.). Прапорці зберігають свої значення доти, доки інша команда їх не змінить.
Формат регістру прапорців.
15
14 13 12 11 10 9 8 7 6 5 4 3
2 1 0
X X X X OF DF IF TF SF ZF X AF X PF X CF
Х відмічені біти, що не використовуються.
CF (Carry Flag) – прапорець переносу. Містить значення переносів (“0” або “1”) із старшого розряду під час арифметичних операцій та операціях ссуву та циклічного ссуву.
PF (Parity Flag) – прапорець парності. Перевіряє молодші 8 бітів операцій над даними. Непарна кількість одиниць викликає встановлення цього прапорця в “0”, парна – в “1”. Не слід плутати цей прапорець з бітом контроля на парність.
AF (Auxiliary Carry Flag) – допоміжний прапорець переносу. Встановлюється в “1”, якщо внаслідку виконання арифметичної операції виник перенос з третього біту в регістровій однобайтній команді. Цей прапорець використовується в арифметичних операціях над числами в ASCII- та BCD-форматах.
ZF (Zero Flag) – прапорець нуля. Встановлюється за результатом арифметичних команд та команд порівняння. Якщо результат дорівнює нулю, прапорець встановлюється в “1”, в протилежному випадку – у “0”.
SF (Sign Flag) - прапорець знаку. Встановлюється в відповідності зі знаком результату (старшого біту) арифметичних операцій. У разі додатного результату – “0”, у разі від’ємного –“1”.
TF (Trap Flag) – прапорець трасування. Якщо цей прапорець встановлен в одиничний стан, то процесор переходить у режим покрокового виконання команд.
If (Interrupt Flag) – прапорець переривання. Якщо стан цього прапорця нульовий, переривання заборонені, якщо одиничний – дозволені (керує тільки маскованими апаратними перериваннями).
DF (Direction Flag) – прапорець напряму. Використовується в рядкових командах для визначення напряму обробки рядка.
OF (Overflow Flag) – прапорець переповнення. Фіксує арифметичне переповнення, тобто перенос у (з) старший (знаковий) розряд під час знакових арифметичних операцій.
Команда CMP порівнює два операнди Операнди в процесі виконання команди не змінюються. Команда використовується для перевірки співвідношень “дорівнює”, “не дорівнює”, “більше”, “менше”, “більше або дорівнює”, “менше або дорівнює”. Діє на прапорці AF, CF, OF, PF, SF, ZF. За своїм змістом команда CMP співпадає з командою SUB, за винятком того, що не змінює операнд-приймач. Немає необхідності перевіряти окремо усі праорці, що встановлює команда CMP. У наступному прикладі перевіряється, чи містить регістр BX нульове значення.
CMP BX, 00 ;порівняння BX з 0
JZ B50 ;перехід на B50, якщо BX = 0
... ;дії при BX 0
...
B50: ... ;дії при BX=0
Якщо BX містить нульове значення, команда CMP встановлює прапорець нуля ZF в одиничний стан і можливо змінює (або ні) інші прапорці. Команда JZ (перехід, якщо нуль) перевіряє тільки прапорець ZF. Якщо він дорівнює одиниці, що відповідає нульовому результату, команда передає керувння не адресу, що вказана у її операнді (тобто на мітку B50).
Роздивляючись призначення команд умовного переходу, потрібно пояснити характер їх використання. Типи даних, над якими виконуються арифметичні операції і операції порівняння, визначають, якими командами користуватись: знаковими або беззнаковими. Беззнакові дані використовують усі біти як біти даних. Характерним прикладом є символьні рідки або натуральні числа. У знакових даних самий лівий біт являє собою знак. Якщо його значення дорівнює нулю, то число додатне, якщо дорівнює одиниці – від’ємне.
Як приклад, припустимо, що регістр AL містить 11000110, а BL - 00010110. Команда
CMP AL, BL
порівнює вміст регістрів AL та BL. Якщо дані розглядаються як знакові, то значення у BL більше (тому що воно додатне), а якщо як беззнакові. то значення в AL більше.
