REFERATUA.ORG.UA — База українських рефератів



Головна Інформатика, комп'ютери, програмування → СТРУКТУРНЕ ПРОГРАМУВАННЯ НА МОВІ АСЕМБЕЛЕРА

ZF=0

AE

Above or Equal - вище або рівне

CF=0

B

Below – нижче

CF=1

BE

Below or Equal - нижче або рівне

CF=1 або ZF=1

C

Carry – перенос

CF=1

CXZ

CX Register is Zero - регістр СХ рівний нулю

(CX)=1

E

Equal – рівне

ZF=1

*G

Greater – більше

ZF=0 і SF=OF

*GE

Greater or Equal - більше або рівне

ZF=OF

*L

Less – менше

SF<>OF

*LE

Less or Equal - менше або рівне

ZF=1 або SF<>OF

NA

Not Above - не вище

CF=1 або ZF=1

NAE

Not Above nor Equal - не вище або рівне

CF=1

NB

Not Below - не нижче

CF=0

NBE

Not Below nor Equal - не нижче або рівне

CF=0 i ZF=0

NC

No Carry - німа переносу

CF=0

NCXZ

CX Register Not Zero - регістр СХ не нуль

(CX)<>0

NE

Not Equal - не рівне

ZF=0

*NG

Not Greater -- не більше

ZF=1 або SF<>OF

*NGE

Not Greater nor Equal - не більше, не рівне

SF<>OF

*NL

Not Less - не менше

SF=OF

*NLE

Not Less nor Equal -- не менше, не рівне

ZF=O i SF=OF

*NO

No Overflow - німа переповнення

OF=0

NP

No Parity (Odd) - неспівпадання парності (непарне)

PF=0

*NS

No Sign - німа знаку

SF=0

NZ

Not Zero - не нуль

ZF=0

*O

Overflow – переповнення

OF=0

P

Parity (Even) - співпадання парності (хлопцю)

PF=1

PE

Parity Even – хлопцю

PF=1

PO

Parity Odd – непарне

PF=0

*S

Sign – знак

SF=1

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:

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

Загальна форма операторів $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 в один


 
Загрузка...