136
5. Rozkazy mikroprocesorów 8086/8088
Rozkaz realizuje przesunięcie cykliczne w prawo przez znacznik przeniesienia CF, lewego argumentu o liczbę bitów określoną prawym argumentem (rys. 5.2). Jeżeli przesunięcie jest o 1 bit, to jedynka jest wprost prawym argumentem. Przy przesunięciu o większą liczbę bitów, prawym argumentem jest rejestr CL, który wcześniej należy załadować liczbą określającą o ile bitów należy przesunąć lewy argument. W czasie przesuwania najmniej znaczący bit argumentu jest wprowadzany do znacznika ęF, pozostałe bity argumentu są przesuwane o 1 bit w prawo, a poprzedni stan znacznika CF (zapamiętany w pomocniczym przerzutniku) jest przepisywany na miejsce najbardziej znaczącego bitu argumentu. Tak więc bity argumentu wraz ze znacznikiem CF krążą w kółko. Jeżeli przy przesuwaniu o 1 bit w prawo nie zmieni się zawartość bitu znaku, to znacznik OF jest zerowany. W przeciwnym wypadku znacznik OF przyjmuje wartość L Możliwe opcje
Przesunięcie cykliczne w prawo z przeniesieniem o 1 bit
Operacja: {w = 0 => n: = 7 else n: = 15}; next argument < n:0 > oCF♦-CFoargument < n:0 >; next (argument < n > * argument < n-1 > => OF«-l else OF«-0)
Argumentem jest rejestr
1101 OOOw 11011 reg
Przykłady
RCR SI, 1
Argument jest w pamięci
1101 OOOw modOllr/m addrlow addrhigh
Liczba taktów - 15 4- takty do obliczenia adresu efektywnego.
Przykłady
RCR ZMIENNAJBP], 1 1
RCR BAJT, 1
RCR ZMIENNA[S1], 1
RCR BYTE PTR [DI], 1 ♦
Przesunięcie cykliczne w prawo z przeniesieniem o więcej niż 1 bit Operacja: {w = 0 => n: = 7 else n: = 15}; next CL*0 =>
=> argumment < n:0 > oCF«-CFoargumcnt < n:0 >; next CL«-CL-1; next IP«— IP-d)
{d - długość rozkazu w bajtach (2/4)}
5.4. Rozkazy przetwarzające łańcuchy (rozkazy blokowe)
powered by
Mi si^)l
Argumentem jest rejestr 1101 001 w 11011 reg Liczba taktów -8 + 4 takty na każdy bit.
MOV CL, 9 RCR AX, CL RCR DI, CL MOV CL, 3 RCR AH, CL
RCR DL, CL ♦
Argument jest w pamięci
1101 OOlw modOllr/m addrlow addr high
Liczba taktów' - 20 + takty do obliczenia adresu efektywnego + 4 takty na każdy bil
MOV CL, 9
RCR ZMIENNA[BP], CL RCR BAJT, CL MOV CL, 3 RCR ZMIENNA, CL
RCR WORD PTR [SI], CL ♦
Mikroprocesory 8086/8088 mają rozkazy umożliwiające działania w prosty sposób na łańcuchach, tablicach czy blokach danych w pamięci operacyjnej. Można je podzielić na dwie grupy
- proste rozkazy realizujÄ…ce pojedynczÄ… operacjÄ™,
- przedrostki deklarujące powtórzenie rozkazu prostego.
Rozkazy te używają zawsze tych samych rejestrów do adresowania argumentów oraz zliczania powtórzeń (kroków)
DS:SI f- adres źródła danych,
ES:DI - adres wyniku (przeznaczenia),
CX - licznik powtórzeń.
Rozkaz z przedrostkiem, a więc wykonywany wielokrotnie, zostanie zakończony po wyzerowaniu licznika CX, lub po spełnieniu innych warunków związanych z ustawianiem znacznika ZF. W zależności od stanu znacznika kierunku DF, po jednokrotnym wykonaniu rozkazu stan rejestrów SI oraz DI jest zwiększany (DF = 0) lub zmniejszany (DF=1), co pozwala na automatyczne zaadresowanie następnego argu-