126 5. Rozkazy mikroprocesorów 808618088
SHL DX, 1 SHL DI, 1
Argument jest w pamięci
1101 OOOw modlOOr/m addrlow addrhigh
Liczba taktów -15 + takty do obliczenia adresu efektywnego.
Przykłady
SAL ZMIENNA[SI], 1 SAL BAJT, 1 SHL ZMIENNA[DI], 1 SHL BAJT, 1
CF n 0
a)
SHL/SAL
b)
SHR
n |
n -1 |
0 |
CF |
- ^ ^ |
| | ||
k 1 | |||
J |
CF n n -1 0
Rys. 5.2. Rozkaz przesunięć; (a, c) arytmetycznych, (a. b) logicznych. (d...g) cyklicznych; przyczyni: w = 0 ♦- n *= 7, w = l<— n = 15
c)
SAR
<*)
ROL
e)
ROR
0
RCL
g)
RCR
5.3. Rozkazy operacji arytmetycznych i logicznych Przesunięcie logiczne lub arytmetyczne w lewo o więcej niż 1 bit
powered by .. - 127 n
mt siol
Operacja: {w = 0 =* n: = 7 else n: = 15}; next CL^O =* (CFoargumcnt < n:l > ^-argument < n:0> ;argument<0> —0; next CL*-CL-1; next IP<-IP-d) {d - długość rozkazu w bajtach (2/4)}
Argumentem jest rejestr
1101 OOlw 11100 reg^
Liczba taktów -8 + 4 takty na każdy bit.
Przykłady
MOV CL, 12 SAL AX, CL SAL SI, CL MOV CL, 5 SHL BL, CL
SHL AH, CL ♦
Argument jest w pamięci
1101 OOlw mod 100 r/m addr low addr high
Liczba taktów - 20 + takty do obliczenia adresu efektywnego + 4 takty na każdy bit.
Przykłady
MOV CL, 11 SAL ZMIENNA[SI], CL SAL BAJT, CL MOV CL, 6
SHL ZMIENNA[DI], CL
SHL BAJT, CL ♦
SHR (ang. shift logie a l right by te or word )
przesunięcie logiczne w prawo bajtu lub słowa ____
Operacja: zobacz niżej
Znaczniki: OF DFIF TF SF ZF AF PF CF
X-- - X X ? X X
Rozkaz realizuje przesunięcie logiczne 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, na miejsce najbardziej znaczącego bitu jest wpisywane 0. Poprzednia zawartość znacznika CF jest tracona. Jeżeli przy przesuwaniu o 1 bit nie zmieni się zawartość bitu znaku, to znacznik OF jest zerowany. W przeciwnym wypadku znacznik OF przyjmuje wartość 1. Możliwe opcje