Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lect1_ass.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
318.46 Кб
Скачать

Лекція №4

Команди розгалуження:

До цих команд належать команди безумовного переходу , команди умовного переходу, команди зациклення, команди звернення до підпрограми та повернення з них.

Команди безумовного переходу:

Безумовний перехід – змінюють природний порядок виконання команд. При цьому змінюється лічильник команд IP, та сегментний регістр CS (в разі міжсегментних переходів).

Діляться на 2 групи:

  • Внутрішньосегментні (без зміни CS) NEAR PTR;

  • Міжсегментні (із зміною CS) FAR PTR;

Переходи є за прямою адресою і за опосередкованою адресою, тобто для внутрішньо сегментних переходів маємо тип операнда NEAR PTR і WORD PTR, а для міжсегментного переходу FAR PTR і DWORD PTR.

PTR – це спеціальна операція Pointer, яка привласнює операнду певний тип.

Умовний перехід – для процесів 8086 мають довжину 2 байта, з 386 – 4 байта (2Б – код команди, 2 – зміщення відносно поточної адреси).

Якщо виконується умова переходу, то здійснюється перехід за вказаною адресою, інакше – виконується наступна команда.

СMP AX, CX

JE M1

LOOP P1 зміщ.= адр.(М1) – адр (LOOP) = 120H – 120H =

. = 1EH.

. 127>зміщ. - 128

.

M1:

Без урахування

знаку

Власно yмова

переходу

СССС

З урахуван-ням знаку

Власно yмова

переходу

СССС

> JA/JNBE

CF=Ø ZF=Ø

Ø111

JB/JNLE

(CF OF ZF=Ø)

1111

JAE/JNB/JNC

CF=Ø

ØØ11

JGE/JNL

SF OF=Ø

11Ø1

< JB/JNAE/JC

CF=1

ØØØØ

JL/JNGE

SF OF=1

11ØØ

JBE/JNA

CF=1 ZF=1

Ø11Ø

JLE/JNG

(CF OF ZF=1)

111Ø

- сума за mod 2

JC/JB/JNAE CF-1 ØØ1Ø

= JE/JZ ZF=1 Ø1ØØ

JNC/JAE/JNB CF=Ø ØØ11

<> JNE/JNZ ZF=Ø Ø1Ø1

JNO OF=0 ØØØ1 перехід за умовою

J NP/JPO PF=Ø 1Ø11 переповнення, за умовою

JNC SF=Ø 1ØØ1 парності

JO OF=1 ØØØØ

JP/JPE PF=1 1Ø1Ø

JS SF=1 1ØØØ

Окремо стоїть команда

JCXZ умова – CX = Ø

Команди зациклення:

Ці команди використовують регістр-лічильник СХ.

При виконанні цих команд із СХ віднімається 1 в молодшому розряді, і якщо вміст СХ , то здійснюється зациклення за вказаною адресою, інакше виконується команда – вихід з циклу.

Команди:

LOOP CX 0

LOOPE/LOOPZ CX 0 i ZF=1

LOOPNE/LOOPNZ CX 0 i ZF=Ø

Ці команди двобайтні.

П

Підготовка циклу

L1:

Тіло циклу

.

.

.

LOOP L1

риклад:

Приклад додавання багатобайтних значень:

OP1 DB 1AH, 3CH, 81H, 34H, 51H

OP2 DB ØA3H, 2BM, 93H, 45H, 55H

.

.

.

ознака переносу CLC

MOV SI, OFFSET OP1

MOV DI, OFFSET OP2

MOV CX, OP2-OP1

CYCLE: MOV AL , [SI]

ADС [DI] , AL ; SBB

DAA ; DAS

INC SI

INC DI

LOOP CYCLE

При відніманні замість ADС використовують SBB. В разі упакованих десяткових даних (BCD) треба здійснювати десяткову проекцію при додаванні або відніманні (після ADS встановлюється команда DAA – при «+» і DAS - при «-»)

Команди звернення до підпрограм та повернення з них мають такі ж формати як і команда JMP.

CALL <адреса>

В стек записується IP або IP та CS (міжсегментні). Після чого в ці регістри записується перехід до підпрограми. Останньою командою, що виконується має бути RET,що зчитує зі стеку IP та CS.

RET може мати операнди, які використовуються у разі передачі параметрів через стек.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]