118
5. Rozkazy mikroprocesorów 8086/8088
MOV AL, 8FH CBW
???? ???? 1111 1111
1000 1111 1000 1111
CWD (ang. convert word to doubleword ) zamiana słowa na podwójne słowo
0)
Operacja: AX < 15 > = 1 => (DX 0FFFFH else DX
Zvctx£vwa: pe£ £juav i
Rozkaz zamienia liczbę 16-bitową ze znakiem, zawartą w rejestrze AX, na liczbę 32-bitową ze znakiem w podwójnym rejestrze DXoAX. Konwersja sprowadza się do załadowania odpowiednio wartości OH lub OFFFFH do rejestru DX, w zależności od tego, czy liczba w rejestrze AX była dodatnia czy ujemna.
Liczba taktów - 5.
MOV AX, 90AFH
CWD
IDIV BX
DX
????H
OFFFFH
AX
90AFH
90AFH
NOT (ang. not byte or word) negacja logiczna bajtu lub słowa
Operacja: {w = 0 => max: = 0FFH else max: = OFFFFH}; argument «- max- argument Znaczniki: bez zmian |
Rozkaz neguje logicznie bity argumentu, czyli powoduje obliczenie uzupełnienia do 1. Argumentem może być rejestr lub argument w pamięci. Możliwe opcje
Negacja logiczna zawartości rejestru
1111 Oliw
11010 reg
Liczba taktów - 3.
; 0101 0000 ; 1010 1111
MOV BH, 50H NOT BH
Negacja logiczna argumentu w pamięci
1111 Oliw
modOlOr/m addr Iow
addrhigh
Liczba taktów -16 + takty do obliczenia adresu efektywnego.
5.3. Rozkazy operacji arytmetycznych i logicznych
Przykład
ZMIENNA DB 14
NOT ZMIENNA ; ZMIENNA = -15
AND (ang. and byte or word) mnożenie logiczne bajtu lub słowa
Operacja: lewyargument «- lewy_argument A prawyargument; OF «-0; CF <- 0 Znaczniki: OF DFIF TF SF ZF AF PF CF 0 - - - x x ? x 0
Rozkaz realizuje logiczne mnożenie odpowiadających sobie bitów dwóch argumentów, które mogą być bajtami lub słowami, i umieszcza wynik w miejscu lewego argumentu. Bit wyniku przyjmuje wartość 1 tylko wtedy, kiedy odpowiadające sobie bity w obu argumentach są równe 1. Dopuszczalne kombinacje argumentów są określone w tabl. 5.8. Możliwe opcje
Mnożenie logiczne zawartości rejestru przez rejestr 0010 OOlw 11 reg reg Liczba taktów - 2.
Przykłady
AND DI, CX AND CL, CH AND BP, AX AND BH, AL
Mnożenie logiczne zawartości pamięci przez rejestr 0010 OOlw mod rej r/m addr Jow addrhigh
Liczba taktów - 9 4* takty do obliczenia adresu efektywnego.
Przykłady
AND AL, ZMIENNA_BAJT[SI +1] AND CX, ZMIENNA[BX + 5]
Mnożenie logiczne zawartości rejestru przez pamięć >001 OOOw mod reg r/m addr low addr high
Liczba taktów -16 + takty do obliczenia adresu efektywnego.
Wykłady
AND ZMIENNAJBAJTJDI], BL AND ZMIENNA 2, SI AND ZMIENNA[BX + 3], AX