Реферат: Структурне програмування на асемблері
(Ми вставили мітку $$IF1 тільки для ілюстрації, тому що не знаємо яку мітку програма SALUT вставить насправді).
КОМАНДИ, ЩО ГЕНЕРУЮТЬСЯ ОПЕРАТОРАМИ $IF-$ ELSE-$ENDIF
При опрацюванні структури $IF-$ELSE-$ENDIF програма SALUT замінює оператор $IF на команду Jx, що передає керування мітці, що слідує за $ELSE, заміняє $ENDIF на іншу мітку і підставляє замість $ELSE команду короткої передачі керування JMP, що адресується до мітки при $ENDIF Таким чином, як показано на наступному схематичному лістингу, програма SALUT перетворить оператори лівої частини в ті, що зазначені справа.
$IF умова JN умова $$IF1
А
$ELSE JMP SHORT $$EN1
$$IF1:
В
$ENDIF $$EN1:
ВАРІАНТИ ОПЕРАНДУ
Загальна форма операторів $IF і $ELSE
$IF умова [,AND/OR][,LONG]
$ELSE [LONG]
де операції AND і OR дозволяють Вам указувати додаткові умови, а атрибут LONG забезпечує можливість використання довгих блоків команд у цій структурі.
ОПЕРАЦІЇ AND І OR
Дотепер ми обговорювали структури IF, що залежать від виконання тільки однієї умови, але (як і в мові Бейсік) ми можемо домогтися того щоб у структурі IF розглядалася комбінація умов у сполученні з операціями AND і OR
Проте між умовами в мові Бейсік і умовами на мові асемблера є визначені розходження. З одного боку, мікропроцесор розглядає кожний член вираження в порядку його появи; тут немає дужок, що задають порядок дій. З іншого боку, для кожного застосування операції AND або OR потрібно окремий оператор $IF, так що між ними можна поміщати команди.
Нижче приводиться загальний вид оператора $IF із двома умовами, сполученими операцією IF:
... (Обчислити умову1)
$IF умову1,AND
... (Обчислити умову2)
$IF умову2
... (Обидві умови виконані)
...
$ENDIF
Врахуємо, що команди обчислення умови 2 виконуються тільки в тому випадку, якщо умова 1 істинна. Якщо вона хибна, то мікропроцесор пропустить всі оператори аж до оператора $ENDIF. (Звернемо увагу і на те, що ми використовували тільки один оператор $ENDIF, оскільки операція AND об'єднує оператори $IF в один складний оператор.)
За допомогою команд, що слідують за першим оператором $IF, забезпечується установка флагу (або флагів) для другого оператора $IF. Наприклад, для видачі повідомлення "Вага в нормі", якщо значення WEIGHT знаходиться між 31 і 34, треба використовувати оператори
СМР WEIGHT,31
$IF AE,AND
СМР WEIGHT,34
$IF BE
(видати повідомлення "Вага в нормі")