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