Структурне програмування на асемблері, Детальна інформація

Структурне програмування на асемблері
Тип документу: Реферат
Сторінок: 23
Предмет: Комп`ютерні науки
Автор: фелікс
Розмір: 35.4
Скачувань: 1175
Z Zero – нуль ZF=1



СТРУКТУРА IF З ЧАСТКОЮ ELSE

Як і в мові Бейсік, ви можете вставити ELSE і змусити мікропроцесор виконувати альтернативну групу команд у випадку, якщо умова не істинна. Тоді структура IF буде мати вигляд:

$IF умова

A (здійснюється, якщо умова істинна)

$ELSE

B (здійснюється, якщо умова не істинна)

$ENDIF

На мал. 1,б показана блок-схема, що пояснює дію структури $IF-$ELSE-$ENDIF.

ФУНКЦІОНУВАННЯ СТРУКТУРИ IF

Насправді оператори $IF, $ELSE і $ENDIF є командами для програми SALUT. Коли ми викликаємо програму SALUT, то вона перетворює ці оператори в рядки коментарів (так що Асемблер буде їх ігнорувати), а потім створює їхній еквівалент на мові асемблера. Після цього програма може бути відтрансльована Асемблером, тому що операторів $IF, $ELSE і $ENDIF в ній уже немає. У наступних розділах ми покажемо, як програма SALUT перетворить спочатку структуру $IF-$ENDIF, а потім структуру $IF-$ELSE-$ENDIF.

КОМАНДИ, ЩО ГЕНЕРУЮТЬСЯ ОПЕРАТОРАМИ $IF-ENDIF

Коли програма SALUT виявляє оператор $IF, вона генерує команду умовної передачі управління Jx, що змушує мікропроцесор пропустити оператори, що знаходяться між оператором $IF і наступним оператором $ENDIF. Звернемо увагу на слово «пропустити». Воно повідомляє нам, що програма SALUT повинна підставити команду Jx, обернену стосовно змісту операнда в операторі $IF. Отже, вона повинна замінити $IF Z на JNZ, а $IF на JNA. Звичайно, у кожної команди умовної передачі управління повинний бути адресат, і тому програма SALUT уставить мітку після оператора $ENDIF. Наприклад після того, як програма SALUT опрацює оператори $IF і $ENDIF, наш попередній приклад прийме такий вид:

CMP BX,0 ;Негативне значення?

;$IF L

JNL $$IF1

NEG BX ;Якщо так, змінити знак

;$ENDIF

$$IF1:

(Ми вставили мітку $$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:

ВАРІАНТИ ОПЕРАНДУ

The online video editor trusted by teams to make professional video in minutes