assembler€86ˆ 0

assembler€86ˆ 0



160


5. Rozkazy mikroprocesorów 8086/8088

[TllOOOlO disp

Liczba taktów -17 dla skoku wykonanego, 5 dla skoku nie wykonanego.

Przykład

; suma bÄ™dzie wAX ; stan poczÄ…tkowy wskaźnika ; ile zsumować elementów ; zsumuj kolejny element ; wskaż nastÄ™pny element ; powtórz jeÅ›li CX^0

♦


MOV AX, 0 MOV SI, 0

MOV CX, LENGHT TABLICA PĘTLA: ADD AX, TABLICA[SI] ADD SI, TYPE TABLICA LOOP PĘTLA MOV SUMA, AX

LOOPE/LOOPZ (ang. loop if eÄ…ual/if zero )

powtórzenie sekwencji rozkazów jeśli rejestr CX^0 i jest równość, powtórzenie sekwencji rozkazów jeśli CX^0 i wartość równa zero

Operacja: CX<-CX-1; next (CF^O A ZF = 1) => IP^-IP + disp Znaczniki: bez zmian

Rozkaz powoduje zmiejszenic rejestru CX peÅ‚niÄ…cego rolÄ™ licznika o jeden, sprawdzenie czy CX ^0 i ZF = 1 i jeżeli tak, to przekazanie sterowania pod adres wynikajÄ…cy z dodania argumentu rozkazu LOOPE/LOOPZ (disp) do offsetu nastÄ™pnego po LOOP rozkazu. Gdy CX = 0 lub ZF = 0 nie jest wykonywana żadna operacja.


Liczba taktów - 18 dla skoku wykonanego, 6 dla skoku nie wykonanego.

Przykład

; poszukiwanie w TABLICY elementu różnego od 2020H MOV CX, LENGHT TABLICA    ; ile elementów przeszukać

MOV SI, -2    ; elementami sÄ… sÅ‚owa

PĘTLA:    INC SI ; nastÄ™pny element

INC SI

CMP TABLICA[SI], 2020H    ; czy jest równy 2020H ?

LOOPE PĘTLA    ; powtórz test

JNE JEST ROÅ»NY    ; znaleziono różny od 2020H    +

LOOPNE/LOOPNZ (ang. loop if not eÄ…ual/if not zero )

powtórznie sekwencji rozkazów jeśli rejestr CX^0 i nie ma równości, powtórzenie sekwencji rozkazów jeśli CX ^0 i wartość różna od zera

Operacja: CX«-CX-1; next (CF^O A ZF = 0) => IP«-IP + disp Znaczniki: bez zmian

Rozkaz powoduje zmiejszenie rejestru CX pełniącego rolę licznika o jeden, sprawdzenie czy CX^0 i ZF = 0 i jeżeli tak, to przekazanie sterowania pod adres

powered by

5.7. Rozkazy przerwań


Mi si]dl

wynikający z dodania argumentu rozkazu LOOPNE/LOOPNZ (disp) do offsetu następnego rozkazu po LOOP. Gdy CX = 0 lub ZF = 1 nie jest wykonywana żadna operacja.

1110 0000 disp

Liczba taktów - 19 dla skoku wykonanego, 5 dla skoku nie wykonanego.

Przykład

; przepisanie TABLICY1 do TABLICY2 aż do napotkania zerowego bajtu MOV CX, LENGHT TABLICA 1    ; dÅ‚ugość tablicy

MOV SI, -1    ; przepisywanie bajtami

PĘTLA:


M()V BL, TABLICA1[SI] MOV TABLICA2[S1], BL CMP BL, 0 LOOPNZ PĘTLA


INC SI ; następny bajt ; przepisz bajt

; czy zakończyć ?

JCXZ (ang.junip if CX is zero)

skok względny jeśli rejestr CX równy jest zero

Operacja: CX = 0 => IP«-IP + disp Znaczniki: bez zmian

Jeżeli CX = 0, to sterowanie jest przekazywane pod żądany adres, który nic może być odlegÅ‚y od offsetu nastÄ™pnego rozkazu o wiÄ™cej niż -128 i +127. Jeżeli CX *0, to skok nie jest wykonywany i jest realizowany kolejny rozkaz w programie.

1110 0011    disp

Liczba taktów -18 dla skoku wykonanego, 6 dla skok nie wykonanego.

Przykład

PĘTLA:

CMP AL,

JE JEST

LOOP PĘTLA

JEST:    JCXZ KONIEC



5.7. Rozkazy przerwań

Rozkazy przerwaÅ„ pozwalajÄ… na przekazanie sterowania do podprogramów obsÅ‚ugi przerwaÅ„ w taki sam sposób, jak w przypadku przerwaÅ„ pochodzÄ…cych od urzÄ…dzeÅ„ zewnÄ™trznych. Rozkazy przerwaÅ„


Wyszukiwarka

Podobne podstrony:
assembler?86? 0 1 1 140 5. Rozkazy mikroprocesorów 8086/8088 MOVS CEL, ZRODLO MOV SI, OFFSET ZRODL
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 3 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
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? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 4 108 5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady DEC SI DEC AX    
assembler?86? 7 114    5. Rozkazy mikroprocesorów 8086/8088 Mnożenie zawartoÅ›ci aku
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 1 122 5. Rozkazy mikroprocesorów 8086/8088 OR DX, STALA_EQU OR CL, 8   &nb
assembler?86? 2 124 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje logiczne mnożenie odpowi
assembler?86? 4 128 5. Rozkazy mikroprocesorów 8086/8088 Przesunięcie logiczne w prawo o 1 bit Ope
assembler?86? 5 130 5. Rozkazy mikroprocesorów 8086/8088 Przykłady SAR ZMIENNA, 1 SAR BAJT[BP +1],
assembler?86? 7 134 5. Rozkazy mikroprocesorów 8086/8088 Przykłady MOVCL, 11 ROR ZMIENNA[BP], CL

więcej podobnych podstron