92 5. Rozkazy mikroprocesorów 8086/8088
Zamiana miejscami zawartości rejestru z zawartością pamięci
1000 Oliw modregr/m addrlow addrhigh
Liczba taktów -17 4- takty do obliczenia adresu efektywnego.
Przykłady
XCHG CL, ZMIENNA BAJT
XCHG AH, ZMIENNA[BP -Å‚- 2]
XLAT, XLATB (ang. translate by te ) 1
pobranie bajtu z tablicy do rejestru AL
Operacja: {w AL - indeks elementu, w BX - offset tablicy} AL <- M[BX 4- AL] Znaczniki: bez zmian
Jeżeli przed wykonaniem rozkazu w akumulatorze AL znajduje się indeks elementu pewnej tablicy bajtów, a w rejestrze BX offset pierwszego elementu tej tablicy, to wykonanie rozkazu powoduje pobranie wskazanego indeksem elementu do akumulatora AL. Tablica nie może być większa niż 256 bajtów.
11010111 |
Przykład
MOV AL, INDEKS
XLAT TABLICA
•••
MOV AL, INDEKS INNY ; BX nie zmienione j
522. Wprowadzanie i wyprowadzanie danych
IN (ang. input byte or word ) J
wprowadzenie bajtu lub słowa z układu wejściowego
Operacja: zob. opcje Znaczniki: bez zmian
Rozkaz powoduje wprowadzenie bajtu lub słowa z układu wejściowego do akumulatora, odpowiednio AL lub AX. Adres układu wejściowego może być pobrany z rejestru DX, może być też określony drugim bajtem rozkazu (stanowi wtedy wartość bezpośrednią). W pierwszym przypadku adres może być 16-bitowy, w drugim zaś 8 bitowy. Możliwe opcje
powered by
5.2. Rozkazy transmisji danych
Adres układu wejściowego określony zawartością rejestru DX Operacja: (w = 0) => AL <- Wc[DX] else AX *- We[DX]
1110 110w_
Liczba taktów - 8.
ADRES EQU 04AE7H MOV DX, ADRES IN AX, DX MOV DX, 1234H
IN AL, DX +
Adres układu wejściowego jest wartością bezpośrednią Operacja: (w = 0) => AL *- We[PC +1] else AX We[PC + 1]
1110 OlOw portaddr
Liczba taktów -10. ?mi 9' **
ADRES EOU 108 IN AX, ADRES
IN AL, 255 +
OUT (ang. output byte or word)
wyprowadzenie bajtu lub słowa do układu wyjściowego
Operacja: zobacz opcje Znaczniki: bez zmian
Rozkaz powoduje wyprowadzenie z akumulatora, odpowiednio AL lub AX, bajtu lub słowa do układu wyjściowego. Adres układu wyjściowego jest pobierany 7 rejestru DX lub też jest określony drugim bajtem rozkazu (wartość bezpośrednia).
W pierwszym przypadku adres może być 16-bitowy, w drugim zaś 8-bitowy.
Możliwe opcje
Adres układu wyjściowego określony zawartością rejestru DX Operacja: (w = 0) => Wy(DX] «-AL else Wy[DX] «-AX
Llczba taktów - 8.
Pr^klady
ADRES EQU 0FF00H MOV DX, ADRES