124
5. Rozkazy mikroprocesorów 8086/8088
Rozkaz realizuje logiczne mnożenie odpowiadających sobie bitów dwóch argumentów, które mogą być bajtami lub słowami, jednak w przeciwieństwie do rozkazu AND nie zapamiętuje wyniku, a jedynie ustawia znaczniki. Kombinacje argumentów określono w tabl. 5.8. Możliwe opcje
Porównanie logiczne zawartości rejestrów 1000 OlOw llregreg Liczba taktów - 3.
Przykłady
♦
TEST DI, CX TEST CL, CH TEST BP, AX TEST BH, AL
Porównanie logiczne zawartości rejestru i argumentu w pamięci
1000 OlOw
mod reg r/m addr low
addr
_high_|
Liczba taktów - 9 + takty do obliczenia adresu efektywnego.
Przykłady
TEST CL, ZMIENNA BAJT[SI +1)
♦
♦
TEST DI, ZMIENNA 2 TEST ZMIENNA[BX + 5], CX TEST SLOWO[BX][SI], DI
Porównanie logiczne zawartości akumulatora i wartości bezpośredniej 1010 lOOw data Iow datahigh Liczba taktów - 4.
Przykłady
TEST AX, 00FFH TEST AX, STALAEOU TEST AL, 55H TEST AL, 11100001B
Porównanie logiczne zawartości rejestru i wartości bezpośredniej 1111 Oliw 11000 reg data Iow data high
Liczba taktów - 5.
Przykłady
TEST AH, 11110001B TEST CX, STALAEOU
5.3. Rozkazy operacji arytmetycznych i logicznych
powered by
Mi sfbl
♦
TEST DI, 1234H TEST CL, 1
Porównanie logiczne argumentu w pamięci i wartości bezpośredniej 1111 Oliw modOOOr/m addr low addr high data low data high Liczba taktów -11 + takty do obliczenia adresu efektywnego.
przykłady
TEST ZM1ENNA[BP], STALA EOU TEST ZMIENNABAJT, 01101100B
53.6. Przesunięcia
SHL/SAL (ang. shift logical/arithmetic left byte or word) przesunięcie logiczne lub arytmetyczne w lewo bajtu lub słowa
Operacja: zobacz niżej
Znaczniki: OF DFIF TF SF ZF AF PF CF JSWBfl
X- X X ? X X
Oba rozkazy realizują tę samą funkcję przesunięcia w lewo 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 należy załadować liczbą określającą, o ile bitów należy przesunąć lewy argument. W czasie przesuwania najbardziej znaczące bity argumentu są wprowadzane do znacznika CF, na miejsce najmniej znaczącego bitu jest wpisywane 0. Poprzednia zawartość znacznika CF jest tracona. Jeżeli przy przesuwaniu o 1 bit w lewo nie zmieni się zawartość bitu znaku, to znacznik OF jest zerowany. W przeciwnym wypadku znacznik OF przyjmuje wartość 1. Możliwe opcje
Przesunięcie logiczne lub arytmetyczne w lewo o 1 bit
Operacja: {w = 0 =* n: = 7 else n: = 15}: next CFoargument<n:l> ^-argument < n:0 >; argument < 0 > «-0; next (argument < n > CF => OF*-l else OF«-0) Argumentem jest rejestr
U01 000w 11100 reg
Liczba taktów - 2.
Przykłady
SAL AL, 1 SAL DX, 1
SAL DI, 1 '
SHL AL, 1