128
5. Rozkazy mikroprocesorów 8086/8088
Przesunięcie logiczne w prawo o 1 bit Operacja: {w = 0 => n: = 7 else n: = 15};
next argument < n-l:0 > oCF«-argument < n:0 > ;argument < n > «-0; next (argument<n> * argument < n-1 > =>OF«-l elseOF<-0)
Argumentem jest rejestr 1101 OOOw 11101 reg
Liczba taktów - 2.
SHR AH, 1 SHR DX, 1 SHR CL, 1 SHR SI, 1
Argument jest w pamięci
1101 OOOw mod 101 r/m addrlow addrhigh
Lic/ba taktów -15 + takty do obliczenia adresu efektywnego.
SHR ZMIENNA, 1 SHR BAJT[DI +8], 1 SHR ZMIENNAfSI + BP), 1 SHR BAJT, 1
Przesunięcie logiczne w prawo o więcej niż 1 bit
Operacja: (w = 0 =* n: = 7 else n: = 15};
next CL^O => (argumcnt<n-l:0>oCF«-argument<n> «-0;
next CL<-CL-1; next IP«-IP-d) {d - długość rozkazu w bajtach (2/4)}
Argumentem jest rejestr
1101 OOlw 11101 reg
Liczba taktów -8 + 4 takty na każdy bil.
♦
MOV CL, 12 SHR BX, CL SHR DI, CL MOV CL, 3 SHR DH, CL SHL AL, CL
powered by
5.3. Rozkazy operacji arytmetycznych i logicznych
Argument jest w pamięci
Liczba taktów - 20 + takty do obliczenia adresu efektywnego + 4 takty na każdy bit.
przykłady
MOV CL, 2
SHR ZMIENNA[BP], CL SHR BAJT, CL
MOV CL, 6
SHL ZMIENNA[DI], CL
SHL BAJT, CL +
SAR (ang. shift arithmetic right byle or word )
przesunięcie arytmetyczne w prawo bajtu lub słowa__
Operacja: zobacz niżej Znaczniki: OF DF 1F TF SF ZF AF PF CF x---xx?xx
Rozkaz realizuje przesunięcie arytmetyczne 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 należy załadować liczbą określającą, o ile bitów należy przesunąć lewy argument. W czasie przesuwania najmniej znaczące bity argumentu są wprowadzane kolejno do znacznika CF, najbardziej znaczący bit nie zmienia wartości. Poprzednia zawartość znacznika CF jest tracona. Przy przesuwaniu o jeden bit znacznik OF jest zerowany. Możliwe opcje
Przesunięcie arytmetyczne w prawo o 1 bit
Operacja: {w = 0 =>n: = 7 else n: = 15}; ncxt argument < n-1:0 > oCF♦-argument < n:0 >; next OF*-0 Argumentem jest rejestr
U01_000w 11111 reg
Liczba taktów - 2.
Przykłady
SAR CH, 1 SAR BP, 1 SAR AL, 1
SAR DI, 1 +
Argument jest w pamięci
Liczba taktów -15 + takty do obliczenia adresu efektywnego.