assembler€86ˆ 0

assembler€86ˆ 0



1

1

140


5. Rozkazy mikroprocesorów 8086/8088

MOVS CEL, ZRODLO MOV SI, OFFSET ZRODLO MOV DI, OFFSET CEL STD ; DF«- 1

MOYSW (zob. przykład dla REP)

LODS/LODSB/LODSW (ang. load byle or word string) załadowanie bajtu lub słowa łańcucha (tablicy, bloku) do akumulatora

Operacja: {w=0 => (accum: = AL; delta: = 1; argument jest bajtem)

else (accum: = AX; delta: = 2; argument jest słowem); next accum<-M[DS:SI]; A

next DF = 0 => SI «-SI + delta else SI<-SI-delta

Znaczniki: bez zmian

Rozkaz LODS powoduje przesÅ‚anie bajtu lub sÅ‚owa w pamiÄ™ci z Å‚aÅ„cucha (tablicy, bloku) źródÅ‚owego adresowanego rejestrami DS:SI do akumulatora (odpowiednio AL lub AX). Po przesÅ‚aniu rejestr SI jest zwiÄ™kszany (DF = 0) lub zmniejszany (DF= 1) o jeden (w = 0) lub o dwa (w= 1). Użycie mnemoniki LODS powoduje, Å¼e asembler okreÅ›la na podstawie atrybutów argumentu, czy ma być przesyÅ‚any bajt, czy sÅ‚owo i na tej podstawie generuje wÅ‚aÅ›ciwy kod wynikowy. Alternatywnie można użyć mnemoniki LODSB lub LODSW. Ta mnemonika okreÅ›la wprost, czy ma być przesyÅ‚any bajt (LODSB) czy sÅ‚owo (LODSW).    '


Liczba taktów - 12 dla operacji jednokrotnej.

Przykłady

LDS SI, ZRODLO STD; DF<-1 LODSB

MOV SI, OFFSET ZRODLO CLD; DF«-0 LODS ZRODLO

STOS/STOSB/STOSW (ang. storę byte or word string) załadowanie z akumulatora bajtu lub słowa łańcucha (tablicy, bloku)

Operacja: (w = 0 => (accum: = AL; delta: = I; argument jest bajtem) else (accum: = AX; delta: = 2; argument jest sÅ‚owem); next M[ES:DI]<—accum; next DF = 0 => DI«-DI + delta else DI«-DI-dclta Znaczniki: bez zmian

Rozkaz STOS powoduje przesłanie bajtu lub słowa z akumulatora (odpowiednio AL lub AX) do pamięci adresowanej rejestrami ES:DI. Po przesłaniu rejestr DI jest zwiększany (DF = 0) lub zmniejszany (DF = 1) o jeden (w = 0) lub o dwa (w = 1).

5.4. Rozkazy przetwarzające łańcuchy (rozkazy> blokowe)

powered by

Mi siiol


Użycie mnemoniki STOS powoduje, że asembler okreÅ›la na podstawie atrybutów argumentu, czy ma być przesyÅ‚any bajt, czy sÅ‚owo i na tej podstawie generuje wÅ‚aÅ›ciwy kod wynikowy. Alternatywnie można użyć mnemoniki STOSB lub STOS W. Ta mnemonika okreÅ›la wprost czy ma być przesyÅ‚any bajt (STOSB) czy sÅ‚owo (STOSW).

1010 lOlw

Liczba taktów -11 dla operacji jednokrotnej.

Przykłady

LDS DI, CEL MOV AX, 0D0AH STOSW

MOV DI, OFFSET CEL MOV AL, BAJT|BX]

STOS CEL    +

SCAS/SCASB/SCASW (ang. scan byte or word string) porównanie bajtu lub słowa łańcucha z zawartością akumulatora

Operacja: {w = 0 => (accum: = AL; delta: = 1; argument jest bajtem) else (accum: =AX; delta: = 2; argument jest sÅ‚owem); next accum-M[ES:DI]; next DF = 0 =» DI«-DI + delta else DI«-DI-delta Znaczniki: OF DF IF TF SF ZF AF PF CF

X -    - - xxxxx

Rozkaz powoduje odjÄ™cie elementu Å‚aÅ„cucha (bajtu lub sÅ‚owa) adresowanego przez rejestry ES:D1 od zawartoÅ›ci akumulatora (odpowiednio AL lub AX). Wynik nie jest zapamiÄ™tywany, jedynie sÄ… ustawiane znaczniki. Po wykonaniu operacji porównania rejestr DI jest zwiÄ™kszany (DF = 0) lub zmniejszany (DF= 1) o jeden (w = 0) lub

0    dwa (w= 1). Użycie mnemoniki SCAS powoduje, że asembler okreÅ›la na podstawie atrybutów argumentu, czy ma być porównywany bajt z zawartoÅ›ciÄ… rejestru AL, czy sÅ‚owo z zawartoÅ›ciÄ… rejestru AX i na tej podstawie generuje wÅ‚aÅ›ciwy kod wynikowy. Można również użyć mnemoniki SCASB (lub SCASW), która okreÅ›la wprost czy majÄ… być porównane bajty (SCASB) czy sÅ‚owa (SCASW) (zob. REPZ/PERE

1    REPNZ/REPNE).

1010 Ulw

Liczba taktów -15 dla operacji jednokrotnej.

Przykłady

LDS DI, CEL MOV AX, 4142H SCASW

JNE NIEZGODNE MOV DI, OFFSET KONIEC


Wyszukiwarka

Podobne podstrony:
assembler?86? 0 160 5. Rozkazy mikroprocesorów 8086/8088 [TllOOOlO disp Liczba taktów -17 dla skok
assembler?86? 7 94 5. Rozkazy mikroprocesorów 8086/8088 OUT DX, AX MOV DX, 7645 OUT DX, AL  &
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],

więcej podobnych podstron