assembler€86ˆ 2

assembler€86ˆ 2



144


5. Rozkazy mikroprocesorów 8086/8088

Przykład

MOV AL, 20H    ; spacja

MOV DI, OFFSET TABLICA MOV CX, LENGHT TABLICA CLD    ; DF«-0 (kierunek)

REPE SCASB    ; kiedy koniec spacji

JNE NIERÓWNE ; w TABLICY ?

REPNE/REPNZ (ang. repeat string operation if not eqnal/not zero ) powtarzanie operacji łańcuchowej tak długo, jak jest nierówność lub nie ma zera

Operacja: CX^0 => ({wykonaj SCAS lub CMPS}; next CX«-CX-1; ncxt ZF=1=>IP«-IP-1)

Znaczniki: bez zmian

REPNE/REPNZ sÄ… to równoważne przedrostki dla operacji Å‚aÅ„cuchowych SCAS i CMPS. Rozkazy te sÄ… wykonywane wielokrotnie tak dÅ‚ugo, jak dÅ‚ugo licznik CX?±0 (zob. komentarz do REP) oraz dodatkowa znacznik ZF = 0, czyli jest nierówność lub wartość nie jest równa zero. Znacznik ZF nie musi być inicjowany bowiem jego testowanie odbywa siÄ™ dopiero po wykonaniu pojedynczej operacji.

REPNE SCAS, REPNZ SCAS - porównywanie zawartoÅ›ci akumulatora (AX lub AL) z elementami Å‚aÅ„cucha dopóki wartoÅ›ci nie sÄ… równe;    *

REPNE CMPS, REPNZ CMPS - porównywanie dwóch łańcuchów dopóki kolejne odpowiadające sobie ich elementy nie są równe.

Liczba taktów - 2.


Przykład

MOV SI OFFSET TABLICA 1 MOV DI, OFFSET TABLICA 2 MOV CX, LENGHT TABL1CA1 CLD

REPNE CMPSW JE RÓWNE


; spacja

; DF*-0 (kierunek)

; znaleziono jednakowe    -

; sÅ‚owa w obu tablicach    â™¦


5.5. Rozkazy sterowania skokami

Rozkazy skoków powodujÄ… zmianÄ™ zawartoÅ›ci wskaźnika rozkazów IP, co pozwala przekazywać sterowanie w różne miejsca w ramach danego segmentu programu. Mówimy wtedy o tzw. skokach bliskich (ang. near ). W przypadku tzw. skoków dalekich ('dng far ) wykonywanych miÄ™dzy różnymi segmentami, jest dodatkowo zmieniana zawartość rejestru segmentowego CS. Wyróżniamy dwie grupy roz.ka/ów

powered by

5.5. Rozkazy sterowania skokami


Mi sto!

Rozkazy skoków bezwarunkowych

JMP - zwykły skok bezwarunkowy,

CALL - wywołanie podprogramu,

RET - powrót z podprogramu do miejsca wywołania.

Rozkazy skoków warunkowych    '    â€˜ “

-    rozkazy testujÄ…ce stan jednego znacznika

JC - skok jeśli jest przeniesienie (CF = 1),

VJNC - skok gdy nie ma przeniesienia (CF = 0),

JO - skok jeśli jest przepełnienie (OF = 1),

JNO - skok gdy nie ma przepełnienia(OF = 0), uJS - skok jeśli znak liczby jest ujemny (SF= 1),

\JNS - skok jeśli znak liczby jest dodatni (SF = 0),

JP/JPE - skok gdy jest parzystość (parzystość) parzysta (PF= 1),

' JNP/JPO - skok gdy nieparzystość (parzystość) nieparzysta (PF = 0), t JZ - skok jeÅ›li liczba równa zero (ZF = 1), j JNZ - skok gdy liczba różna od zera (ZF = 0),

-    rozkazy zwiÄ…zane z porównaniem dwóch argumentów

JE - skok gdy są równe (ZF = 1),

JNE - skok gdy nie są równe, są różne (ZF = 0),

^ JG - skok gdy jest większy ((SF©OF) V ZF = 0),

’ JNG - skok gdy nie jest większy ((SF0OF) V ZF = 1), s JGE - skok gdy jest większy lub równy (SF©OF = 0),

JNGE - skok gdy nie jest większy lub równy (SF©OF = 1),

JL - skok gdy jest mniejszy (SF0OF = 1),

JNL - skok gdy nie jest mniejszy (SF0OF = 0),

JLE - skok gdy jest mniejszy lub równy (SF0OF) V ZF = O),

JNLE - skok gdy nie jest mniejszy lub równy (SF0OF) V ZF = 1),

JA - skok gdy jest powyżej (CF V ZF = 0),

JNA - skok gdy nie jest powyżej (CF V ZF = 0),

JAE - skok gdy jest powyżej lub równo (CF = 0),

JNAE - skok gdy nie jest powyżej lub równo (CF = 1),

JB - skok gdy jest poniżej (CF = 1),

JNB - skok gdy nie jest poniżej (CF = 0),

JBE - skok gdy jest poniżej lub równo (CF V ZF) = 1),

JNBE - skok gdy nie jest poniżej lub równo (CF V ZF = 0),

Przykład

Jeżeli w programie wystąpi sekwencja rozkazów

CMP AX, BX ; porównaj zawartość dwóch rejestrów

Jxxx ETYKIETA ; Jxxx - jeden z rozkazów skoków    â™¦

to skok będzie wykonany w przypadkach uwzględnionych w tabl. 5.11.


Wyszukiwarka

Podobne podstrony:
assembler?86? 6 132 5. Rozkazy mikroprocesorów 8086/8088PrzykÅ‚ad y MOV CL, 12 ROL BX, CL ROL
assembler?86? 9 158 5. Rozkazy mikroprocesorów 8086/8088PrzykÅ‚ad SUB AL, OAAH JNS DALEJ ADD B
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 2 124 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje logiczne mnożenie odpowi
assembler?86? 1 142 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, STD ; DF«-1 SCASB JE STOP CM
assembler?86? 0 1 1 140 5. Rozkazy mikroprocesorów 8086/8088 MOVS CEL, ZRODLO MOV SI, OFFSET ZRODL
assembler?86? 7 94 5. Rozkazy mikroprocesorów 8086/8088 OUT DX, AX MOV DX, 7645 OUT DX, AL  &
assembler?86? 2 164    5. Rozkazy mikroprocesorów 80S6/8088 STD - ustawienie znaczn
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 3 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady PUSH ZMIENNA
assembler?86? 6 92    5. Rozkazy mikroprocesorów 8086/8088 Zamiana miejscami zawart
assembler?86? 9 98 5. Rozkazy mikroprocesorów 8086/8088 Pojęcie rozpakowanego i normalnego kodu BC
assembler?86? 0 100 5. Rozkazy mikroprocesorów 8086/80X8 ADD SI, 0F0D2H ADD BL, 1   &nbs
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor

więcej podobnych podstron