Instrukcje procesorów rodziny 80x86 (L)
Dryobates
LAHF | Load Register AH From Flags | ||||
Użycie | LAHF | ||||
Modyfikowane flagi | Brak | ||||
Kopiuje bity 0-7 z rejestru znaczników do AH. Kopiowane flagi to AF, CF, PF, SF i ZF. Pozostałe bity są nieokreślone. AH := SF ZF xx AF xx PF xx CF | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 4 | 2 | 2 | 3 | 1 |
LAR | Load Access Rights (286+ protected) | ||||
Użycie | LAR dest,src | ||||
Modyfikowane flagi | ZF | ||||
Ważniejszy bajt docelowego rejestru jest nadpisywany wartością bajtu praw dostępu, a mniej ważny bajt jest zerowany w zależności od zaznaczenia w src. ZF = 1 jeżeli operacja powiedzie się. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg16,reg16 | - | 14 | 15 | 11 | 3 |
reg32,reg32 | - | - | 15 | 11 | 3 |
reg16,mem16 | - | 16 | 16 | 11 | 3-7 |
reg32,mem32 | - | - | 16 | 11 | 3-7 |
LDS | Load Pointer Using DS | ||||
Użycie | LDS dest,src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje 32-bitowy wskaźnik z pamięci do określonego rejestru ogólnego dest oraz rejestru segmentowego DS. Przesunięcie umieszczane jest w dest, a segment w DS. Aby używać tej instrukcji słowo pod mniej znaczącym adresem w pamięci musi zawierać przesunięcie, a pod bardziej znaczącym adresem segment. To ułatwia ładowanie wskaźników typu far ze stosu i tablicy przerwań. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg16,mem32 | 16+EA | 7 | 7 | 6 | 2-4 |
reg,mem (PM) | - | - | 22 | 12 | 5-7 |
LEA | Load Effective Address | ||||
Użycie | LEA dest,src | ||||
Modyfikowane flagi | Brak | ||||
Przesyła przesunięcie z pod adresu src do rejestru docelowego - instrukcja MOV może czasem szybciej działać, jeżeli używana jest na procesorach 8088 zamiast LEA. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Reg,mem | 2+EA | 3 | 2 | 1 | 2-4 |
LEAVE | Restore Stack for Procedure Exit (80188+) | ||||
Użycie | LEAVE | ||||
Modyfikowane flagi | Brak | ||||
Zwalnia pamięć zarezerwowaną na stosie dla zmiennych lokalnych utwrzoną przez ostatnią instrukcję ENTER i przywraca wskaźniki SP i BP do ich stanu sprzed inicjalizacji stosu. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | - | 5 | 4 | 5 | 1 |
LES | Load Pointer Using ES | ||||
Użycie | LES dest,src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje 32-bitowy wskaźnik z pamięci do określonego rejestru ogólnego dest oraz rejestru segmentowego ES. Przesunięcie umieszczane jest w dest, a segment w ES. Aby używać tej instrukcji słowo pod mniej znaczącym adresem w pamięci musi zawierać przesunięcie, a pod bardziej znaczącym adresem segment. To ułatwia ładowanie wskaźników typu far ze stosu i tablicy przerwań. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Reg,mem | 16+EA | 7 | 7 | 6 | 2-4 (W88=24+EA) |
Reg,mem (PM) | - | - | 22 | 12 | 5-7 |
LFS | Load Pointer Using FS (386+) | ||||
Użycie | LFS dest,src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje 32-bitowy wskaźnik z pamięci do określonego rejestru ogólnego dest oraz rejestru segmentowego FS. Przesunięcie umieszczane jest w dest, a segment w FS. Aby używać tej instrukcji słowo pod mniej znaczącym adresem w pamięci musi zawierać przesunięcie, a pod bardziej znaczącym adresem segment. To ułatwia ładowanie wskaźników typu far ze stosu i tablicy przerwań. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Reg,mem | - | - | 7 | 6 | 5-7 |
Reg,mem (PM) | - | - | 22 | 12 | 5-7 |
LGDT | Load Global Descriptor Table (286+ privileged) | ||||
Użycie | LGDT src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje wartość src do rejestru Global Descriptor Table (GDT). | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Mem64 | - | 11 | 11 | 11 | 5 |
LIDT | Load Interrupt Descriptor Table (286+ privileged) | ||||
Użycie | LIDT src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje wartość z src do rejestru Interrupt Descriptor Table(IDT). | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Mem64 | - | 12 | 11 | 11 | 5 |
LGS | Load Pointer Using GS (386+) | ||||
Użycie | LGS dest,src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje 32-bitowy wskaźnik z pamięci do określonego rejestru ogólnego dest oraz rejestru segmentowego GS. Przesunięcie umieszczane jest w dest, a segment w GS. Aby używać tej instrukcji słowo pod mniej znaczącym adresem w pamięci musi zawierać przesunięcie, a pod bardziej znaczącym adresem segment. To ułatwia ładowanie wskaźników typu far ze stosu i tablicy przerwań. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Reg,mem | - | - | 7 | 6 | 5-7 |
Reg,mem (PM) | - | - | 22 | 12 | 5-7 |
LLDT | Load Local Descriptor Table (286+ privileged) | ||||
Użycie | LLDT src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje wartość z src do Local Descriptor Table Register (LDTR). | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bytes |
Reg16 | - | 17 | 20 | 11 | 3 |
Mem16 | - | 19 | 24 | 11 | 5 |
LMSW | Load Machine Status Word (286+ privileged) | ||||
Użycie | LMSW src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje Machine Status Word (MSW) z src. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Reg16 | - | 3 | 10 | 13 | 3 |
Mem16 | - | 6 | 13 | 13 | 5 |
LOCK | Lock Bus | ||||
Użycie | LOCK: (386+ prefix) | ||||
Modyfikowane flagi | Brak | ||||
Ta instrukcja jest prefiksem, który powoduje, że CPU wstawia na szynę sygnał lock w trakcie wykonywania następnej instrukcji. Używane, aby zapobiec dwóm procesorom edycji tych samych danych. Procesory 286 zawsze wstawiają lock podczas operacji XCHG na pamięci. To powinno być używane wyłącznie przy blokowaniu szyny przy instrukcjach XCHG, MOV, IN i OUT. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Brak | 2 | 0 | 0 | 1 | 1 |
LODS | Load String (Byte, Word or Double) | ||||
Użycie | LODS src LODS LODS LODSD (386+) | ||||
Modyfikowane flagi | Brak | ||||
Przesyła elementy łańcuchów spod adresu DS:SI (nawet jeżeli operand jest podany) do akumulatora (EAX, AX, AL). SI jest zwiększane zależnie od rozmiaru operandu lub użytej instrukcji. Jeżeli DF = 1, SI jest zmniejszane. Jeżeli DF = 0, SI jest zwiększane. Używaj z prefiksem REP. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
Src | 12/16 | 5 | 5 | 5 | 1 |
LOOP | Decrement CX and Loop if CX Not Zero | ||||
Użycie | LOOP label | ||||
Modyfikowane flagi | Brak | ||||
Zmniejsza CX o 1 i skacze do label jeżeli CX jest różne od zera. label musi zawierać się w przedziale <-128;127> bajtów względem instrukcji następującej po loop. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
label: jump | 18 | 8+m | 11+m | 6 | 2 |
no jump | 5 | 4 | ? | 2 |
LOOPE/LOOPZ | Loop While Equal / Loop While Zero | ||||
Użycie | LOOPE label LOOPZ label | ||||
Modyfikowane flagi | Brak | ||||
Zmniejsza CX o 1 (bez modyfikacji znaczników) i skacze do label jeżeli CX <> 0 i ZF = 1. label musi być z zakresu <-128;127> bajtów. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
label: jump | 18 | 8+m | 11+m | 9 | 2 |
no jump | 5 | 4 | ? | 6 |
LOOPNZ/LOOPNE | Loop While Not Zero / Loop While Not Equal | ||||
Użycie | LOOPNZ label LOOPNE label | ||||
Modyfikowane flagi | Brak | ||||
Zmniejsza CX o 1 (bez modyfikacji znaczników) i skacze do label jeżeli CX <> 0 i ZF = 0. label musi być z zakresu <-128;127> bajtów. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
label: jump | 19 | 8+m | 11+m | 9 | 2 |
no jump | 5 | 4 | ? | 6 |
LSL | Load Segment Limit (286+ protected) | ||||
Użycie | LSL dest,src | ||||
Modyfikowane flagi | ZF | ||||
Laduje segment limit zaznaczenia do rejestru dest, jeżeli zaznaczenie jest poprawne i widoczne w aktualnym poziomie uprawnień. Jeżeli operacja powiedzie się to ZF = 1, w przeciwnym wypadku ZF = 0. - 386 times are listed "byte granular" / "page granular" | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg16, reg16 | - | 14 | 20/25 | 10 | 3 |
reg32, reg32 | - | - | 20/25 | 10 | 3 |
reg16, mem16 | - | 16 | 21/26 | 10 | 5 |
reg32, mem32 | - | - | 21/26 | 10 | 5 |
LSS | Load Pointer Using SS (386+) | ||||
Użycie | LSS dest,src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje 32-bitowy wskaźnik z pamięci do określonego rejestru ogólnego dest oraz rejestru segmentowego SS. Przesunięcie umieszczane jest w dest, a segment w SS. Aby używać tej instrukcji słowo pod mniej znaczącym adresem w pamięci musi zawierać przesunięcie, a pod bardziej znaczącym adresem segment. To ułatwia ładowanie wskaźników typu far ze stosu i tablicy przerwań. | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg,mem | - | - | 7 | 6 | 5-7 |
reg,mem (PM) | - | - | 22 | 12 | 5-7 |
LTR | Load Task Register (286+ privileged) | ||||
Użycie | LTR src | ||||
Modyfikowane flagi | Brak | ||||
Ładuje aktualny rejestr task wartością src (wymaga odpowiednich uprawnień) | |||||
Liczba cykli zegara | Rozmiar | ||||
Parametry | 808x | 286 | 386 | 486 | Bajtów |
reg16 | - | 17 | 23 | 20 | 3 |
mem16 | - | 19 | 27 | 29 | 5 |