Instrukcje procesorów rodziny 80x86 (A)
Dryobates
AAA | Ascii Adjust for Addition | ||||
Użycie | AAA | ||||
Modyfikowane flagi | AF CF (OF,PF,SF,ZF nieokreślone) | ||||
Zmienia zawartość rejestru AL na właściwą rozpakowaną wartość dziesiętną. Ważniejszy nibble (4 bity) jest zerowane. Stosowanie AAA ma sens jedynie po dodawaniu liczb za pomocą ADD lub ADC. Liczba1 db '2' Liczba2 db '9' mov al, [Liczba1] sub al, '0' mov dl, [Liczba2] sub dl, '0' add al, dl aaa W wyniku w al znajdzie się ostatnia cyfra dziesiętna wyniku dodawania, a ah zawierac bedzie wartosc przeniesienia (jak również CF zostanie odpowiednio ustawione) | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 8 | 3 | 4 | 3 | 1 |
AAD | Ascii Adjust for Division | ||||
Użycie | AAD | ||||
Modyfikowane flagi | SF ZF PF (AF,CF,OF nieokreślone) | ||||
Używane przed dzieleniem rozpakowanych liczb dziesiętnych. Mnoży AH przez 10 i dodaje wynik do AL. Ustawia AH na zero. Istnieje też nieudokumentowane zachowanie tej instrukcji AL := 10*AH+AL AH := 0 | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 60 | 14 | 19 | 14 | 2 |
AAM | Ascii Adjust for Multiplication | ||||
Użycie | AAM | ||||
Modyfikowane flagi | PF SF ZF (AF,CF,OF nieokreślone) | ||||
Używane po mnożeniu dwóch rozpakowanych liczb dziesiętnych, ta instrukcja wyjustowuje rozpakowane liczby dziesiętne. Ważniejsze nibble każdego bajtu musi być równe 0 przed użyciem tej instrukcji. Znane jest nieudokumentowane zachowanie tej instrukcji AH := AL / 10 AL := AL mod 10 | |||||
Liczba cykli zegara | Rozmar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 83 | 16 | 17 | 15 | 2 |
AAS | Ascii Adjust for Subtraction | ||||
Użycie | AAS | ||||
Modyfikowane flagi | AF CF (OF,PF,SF,ZF nieokreślone) | ||||
Poprawia wynik poprzedniej oeracji odejmowania rozpakowanych liczb dziesiętnych w AL. Ważniejsze nibble jest zerowane. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 8 | 3 | 4 | 3 | 1 |
ADC | Add With Carry | ||||
Użycie | ADC dest,src | ||||
Modyfikowane flagi | AF CF OF SF PF ZF | ||||
Sumuje dwie liczby binarne umieszczając wynik w dest. Jeżeli CF jest ustawione, 1 jest dodawane do dest. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg,reg | 3 | 2 | 2 | 1 | 2 |
mem, reg | 16+EA | 7 | 7 | 3 | 2-4 (W88=24+EA) |
reg,mem | 9+EA | 7 | 6 | 2 | 2-4 (W88=13+EA) |
reg,immed | 4 | 3 | 2 | 1 | 3-4 |
mem, immed | 17+EA | 7 | 7 | 3 | 3-6 (W88=23+EA) |
accum, immed | 4 | 3 | 2 | 1 | 2-3 |
ADD | Arithmetic Addition | ||||
Użycie | ADD dest,src | ||||
Modyfikowane flagi | AF CF OF PF SF ZF | ||||
Dodaje "src" do "dest" i zamiania oryginalną zawartość "dest". Obyda parametry są liczbami binarnymi. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg, reg | 3 | 2 | 2 | 1 | 2 |
mem, reg | 16+EA | 7 | 7 | 3 | 2-4 (W88=24+EA) |
reg, mem | 9+EA | 7 | 6 | 2 | 2-4 (W88=13+EA) |
reg, immed | 4 | 3 | 2 | 1 | 3-4 |
mem, immed | 17+EA | 7 | 7 | 3 | 3-6 (W88=23+EA) |
accum, immed | 4 | 3 | 2 | 1 | 2-3 |
AND | Logical And | ||||||||
Użycie | AND dest,src | ||||||||
Modyfikowane flagi | CF OF PF SF ZF (AF nieokreślone) | ||||||||
Dokonuje operacji AND (i) na parametrach i zamienia dest przez wynik. Dla każdego bitu jest stosowana operacja według tableki logicznej:
| |||||||||
Liczba cykli zegara | Rozmiar | ||||||||
Parametry | 808x | 286 | 386 | 486 | Bajtów | ||||
reg,reg | 3 | 2 | 2 | 1 | 2 | ||||
mem, reg | 16+EA | 7 | 7 | 3 | 2-4 (W88=24+EA) | ||||
reg,mem | 9+EA | 7 | 6 | 1 | 2-4 (W88=13+EA) | ||||
reg,immed | 4 | 3 | 2 | 1 | 3-4 | ||||
mem,immed | 17+EA | 7 | 7 | 3 | 3-6 (W88=23+EA) | ||||
accum,immed | 4 | 3 | 2 | 1 | 2-3 |
ARPL | Adjusted Requested Privilege Level of Selector (286+ PM) | ||||
Użycie | ARPL dest,src | ||||
Modyfikowane flagi | ZF | ||||
Porównuje bity RPL z dest i src. Jeżeli bity RPL z dest są mniejsze niż te z src, bity RPL są ustawiane na takie jak w src i ZF = 1. W przeciwnym wypadku ZF = 0. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg,reg | - | 10 | 20 | 9 | 2 |
mem, reg | - | 11 | 21 | 9 | 4 |
przyda sie
całkiem niezła pomoc
Świetna ściąga:)