Instrukcje procesorów rodziny 80x86 (A)

Dryobates

AAAAscii Adjust for Addition
Użycie AAA
Modyfikowane flagiAF 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 zegaraRozmiar
Parametry808x286386486Bajtów
Brak83431
AADAscii Adjust for Division
Użycie AAD
Modyfikowane flagiSF 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 zegaraRozmiar
Parametry808x286386486Bajtów
Brak601419142
AAMAscii Adjust for Multiplication
UżycieAAM
Modyfikowane flagiPF 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 zegaraRozmar
Parametry808x286386486Bajtów
Brak831617152
AASAscii Adjust for Subtraction
UżycieAAS
Modyfikowane flagiAF 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 zegaraRozmiar
Parametry808x286386486Bajtów
Brak83431
ADCAdd With Carry
UżycieADC dest,src
Modyfikowane flagiAF 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 zegaraRozmiar
Parametry808x286386486Bajtów
reg,reg32212
mem, reg16+EA7732-4 (W88=24+EA)
reg,mem9+EA7622-4 (W88=13+EA)
reg,immed43213-4
mem, immed17+EA7733-6 (W88=23+EA)
accum, immed43212-3
ADDArithmetic Addition
UżycieADD dest,src
Modyfikowane flagiAF CF OF PF SF ZF
Dodaje "src" do "dest" i zamiania oryginalną zawartość "dest". Obyda parametry są liczbami binarnymi.
 Liczba cykli zegaraRozmiar
Parametry808x286386486Bajtów
reg, reg32212
mem, reg16+EA7732-4 (W88=24+EA)
reg, mem9+EA7622-4 (W88=13+EA)
reg, immed43213-4
mem, immed17+EA7733-6 (W88=23+EA)
accum, immed43212-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:

dest//src01
000
101
  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

Autorzy:
Dryobates
LKS
Vogel
Wirek

3 komentarzy

całkiem niezła pomoc

Świetna ściąga:)