94 5. Rozkazy mikroprocesorów 8086/8088
OUT DX, AX MOV DX, 7645
OUT DX, AL +
Adres układu wyjściowego jest wartścią bezpośrednią Operacja: (w = 0) => Wy[PC +1] <-AL clse Wy[PC +1] <-AX
1110 Oliw portaddr Liczba taktów -10.
Przykłady
OUT 12, AL
OUT 01010101 B,AX +
5.2.3. Ładowanie adresów
LEA (ang. load effective address ) załadowanie adresu efektywnego do rejestru
Operacja: regló<-ea Znaczniki: bez zmian
Rozkaz powoduje obliczenie efektywnego adresu prawego argumentu, a następnie przesłanie go do 16-bitowego rejestru określonego lewym argumentem. Rożka z LEA powinien być używany jedynie wówczas, gdy adres efektywny musi być obliczony w czasie wykonywania programu, na przykład, gdy w wyrażeniu adresowym występuje rejestr indeksowy lub bazowy. W przypadku, gdy adres efektywny jest znany w czasie asemblacji lub łączenia, stosuje się rozkaz MOV oraz operator OFFSET, np. MOV SI,OFFSET TABLICA.
10001101 mod reg r/m addr low addr high
Liczba taktów - 2 + takty do obliczenia adresu efektywnego.
Przykłady
LEA BP, TABLICAfBP + SI + 1 ]
LEA BX, ZMIENNA[DI] +
LDS (ang. load data segment register)
załadowanie adresu logicznego do wskazanego rejestru i do DS
Operacja: regló M[eaj; DS M[ea + 2]
Znaczniki: bez zmian
Rozkaz powoduje przesłanie z pamięci podwójnego słowa, traktowanego jako 32-bitowy adres logiczny do pary 16-bitowych rejestrów. Bardziej znaczące słowo (tego
podwójnego słowa) jest ładowane do rejestru segmentowego DS, mniej znaczące zaś do dowolnego (ale nie segmentowego) rejestru 16-bitowego.
1100 0101 modregr/m addr low addr high
przy czym: mod ^ 11 (oba argumenty nie mogą być rejestrami).
Liczba taktów -16 + takty do obliczenia adresu efektywnego.
Przykłady
LDS AX, PODWÓJNE SLOWOfDI]
LDS SI, WSKAŹNIK ZRODLA +
LES (ang. load exira segment register)
załadowanie adresu logicznego do wskazanego rejestru i do ES
Operacja: regló M[caJ; ES M[ea + 2|
Znaczniki: bez /.mian
Rozkaz powoduje przesłanie z pamięci podwójnego słowa traktowanego jako 32-bitowy adres logiczny do pary 16-bitowych rejestrów. Bardziej znaczące słowo (tego podwójnego słowa) jest ładowane do rejestru segmentowego ES, mniej znaczące zaś do dowolnego (ale nie segmentowego) rejestru 16-bitowego.
1100 0100 modregr/m addrlow addrhigh
przy czym: mod * 11 (oba argumenty nie mogą być rejestrami).
Liczba taktów -16 + takty do obliczenia adresu efektywnego.
Przykłady
LES BX, PODWOJNE_SLOWO[DI + 4]
LES DI, TABELA[BX] ' +
5.2.4. Operacje na rejestrze znaczników LAHF (ang. load AH register from flags )
załadowanie mniej znaczącego bajtu rejestru znaczników do rejestru AH
Operacja: AH< 7:0 > «—SFoZFoxoAFoxoPFoxoCF; {x- bit nieokreślony}
Znaczniki: bez zmian
Rozkaz powoduje załadowanie do rejestru AH mniej znaczącego bajtu rejestru znaczników. Ta część rejestru znaczników zawiera znaczniki odpowiadające dokładnie znacznikom w mikroprocesorach 8080/8085. Rozkaz jest wykorzystywany głównie przy konwersji programów w asemblerze procesorów 8080/8085 na postać realizowalną w mikroprocesorach 8086/8088.
1001 1111
Liczba taktów - 4.