132
5. Rozkazy mikroprocesorów 8086/8088
MOV CL, 12 ROL BX, CL ROL BP, CL MOV CL, 5 ROL AL, CL ROL CH, CL
Argument jest w pamięci
1101001 w mod 000 r/m addrlow addr high
Liczba taktów - 20 + takty do obliczenia adresu efektywnego + 4 takty na każdy bit
MOV CL,
ROL ZMIENNAfDI], CL ROL BAJT, CL MOV CL, 6 ROL ZMIENNA, CL ROL BYTE PTR [BP], CL
ROR (ang. rotate right byte or word) przesunięcie cykliczne w prawo bajut lub słowa
Operacja: zobacz niżej
Znaczniki: OF DFIF TF SF ZF AF PF CF
Rozkaz realizuje przesunięcie cykliczne lewego argumentu w prawo 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 CF, następnie pozostałe bity argumentu są przesuwane o 1 bit w prawo i na końcu stan znacznika CF jest przepisywany na miejsce najbardziej znaczącego bitu argumentu. Tak więc bity argumentu 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ść 1. Możliwe opcje
Przesunięcie cykliczne w prawo o 1 bit
Operacja: {w = 0 => n: =7 else n: = 15}; next CF*-argument<n>; ncxt argument < n:0> ♦-argument <0> oargument < n:l >; next (argument < n > ^ argument < n-1 > => OF<-l else OF<-0)
Argumentem jest rejestr
powered by
5.3. Rozkazy1 operacji arytmetycznych i logicznych
1101 000w 11001 regj Liczba taktów - 2.
Przykłady
ROR AH, 1 ROR BX, 1 ROR SI, 1
ROR DX, 1 ♦
Argument jest w pamięci
1101 OOOw mod 001 r/m addr Jow addrhigh
Liczba taktów -15 + takty do obliczenia adresu efektywnego.
Przykłady
ROR ZMIENNAJBP], 1
ROR BAJT, 1
ROR ZMIENNAfSI], 1
ROR BYTE PTR [DI], 1 ♦
Przesunięcie cykliczne w prawo o więcej niż 1 bit
Operacja: {w = 0=*n: = 7else n: = 15 }; ncxt CL^0 => (LCF*-argument<0>; next argument < n:0 > ^-argument < 0 > oargument < n-1 >; next CL<-CH; next IP«—IP—d) {d - długość rozkazu w bajtach (2/4)}
Argumentem jest rejestr
1101 OOlw 11001 reg
Liczba taktów -8 + 4 takty na każdy bit.
Przykłady
MOV CL, 9 ROR AX, CL ROR DI, CL MOV CL, 3 ROR AH, CL
ROR DL, CL ♦
Argument jest w pamięci
Liczba taktów - 20 + takty do obliczenia adresu efektywnego + 4 takty na każdy bit.