168
5. Rozkazy mikroprocesorów 808618088
przy czym .ca* - 3 bity nie dekodowane przez 8086/8088.
Liczba taktów - 8 + takty do obliczenia adresu efektywnego.
Przykłady
ESC WORD PTR [BP+ 7]
• • •
KOD OPERACJ1 EOU 110010B ; ‘adres* procesora
ESC KOD OPERACJI, ZMIENNA
LOCK (ang. lock bus during next instruction) zablokowanie dostępu do magistrali
Operacja:- ..,,^1
Znaczniki: bez zmian
LOCK jc$t jednobajtowym przedrostkiem, którym może być poprzedzony każdy inny rozkaz. Powoduje zablokowanie dostępu innych procesorów do pamięci do czasu wykonania następnego rozkazu (w maksymalnym trybie pracy procesora - zob.
pkt. 2.1). >
11110000
Liczba taktów - 2. -Ml
Przykład
; testowanie semafora dostępnego dla różnych procesorów TESTUJ: MOV AL, 1 ; 1 - semafor aktywny
LOCK XCHG SEMAFOR, AL ; równocześnie ?
TEST AL, AL ; ustaw znacznik ZF
JNZ JEST1 ; semafor uaktywniony jest
; przez inny procesor, czekaj!
; wykonaj operacje przy ; uaktywnionym semaforze
MOV SEMAFOR, 0 ; zwolnij semafor ♦
NOP (ang. no operation ) nic nie rób
Operacja: -Znaczniki: bez zmian
Wykonanie rozkazu nie powoduje żadnej operacji. Pozwala, na przykład zarezerwować miejsce w programie na ewentualne przyszłe uzupełnienia programu o dodatkowe rozkazy.
10010000
Liczba taktów - 3.
powered by
5.9. Dodatkowe rozkazy procesorów 80186 i 80286
przykład
NOP ; zarezerwowane 3 bajty na ewentualne NOP ; uzupełnienie rozkazem maszynowym
NOP +
Listy rozkazów procesorów 80186 i 80286 obejmują wszystkie rozkazy procesorów 8086/8088, oraz szereg rozkazów dodatkowych. Czas wykonania rozkazów, które są wspólne dla wszystkich tych mikroprocesorów jest jednak różny. Wynika to nie tylko z różnych częstotliwości zegarów współpracujących z tymi procesorami, ale także z różnej liczby taktów potrzebnych do wykonania danego rozkazu. W tablicy 5.14 podano przykładowo liczbę taktów dla kilku wybranych rozkazów (r-adresacja rzeczy-wista, w-wirtualna).
Tablica 5.14. Liczba taktów dla wybranych rozkazów
Rozkaz |
8086 |
8088 |
Liczba taktów dla procesora 80186 80188 |
80286r |
80286w | |
ADD |
60 |
60 |
15 |
15 |
14 |
14 |
LŁiA |
2 + ca |
6 + ea |
6 |
6 |
3/4 |
3/4 |
LDS |
16 + ea |
24 + ea |
18 |
26 |
7/8 |
21/22 |
MOV mem. AL |
10 |
10 |
8 |
8 |
3 |
3 |
MOV mcm, AX |
10/14 |
14 |
8 |
12 |
3 |
3 |
MUL rcg8 |
70-77 |
70-77 |
26-27 |
26-28 |
13 |
13 |
NOT mcm 16 |
16 -ł-ca |
20 + ea |
3 |
3 |
7/8 |
7/8 |
POP regló |
8 |
12 |
10 |
14 |
5 |
5 |
POP Sreg |
8 |
12 |
8 |
12 |
5 |
20 |
SUB AX. bezpośr |
4/8 |
8 |
3/4 |
4 |
3 |
3 |
Dodatkowe rozkazy procesorów 80186/80188 i 80286
Mikroprocesory 80186/80188
Można wyróżnić całkowicie nowe rozkazy, oraz rozbudowane opcje rozkazów akceptowanych przez mikroprocesory 8086/8088
BOUND - kontrola przekroczenia wartości granicznej,
ENTER - wejście na wyższy poziom podprogramów,
IMUL - mnożenie ze znakiem przez wartość bezpośrednią, iNSB/INSW - wprowadzenie elementu łańcucha z układu wejściowego,
LEAY E - wyjście z wyższego poziomu podprogramów,
Dlii SB/OLTSW - wysłanie elementu łańcucha do układu wyjściowego,
POPA - pobranie ze stosu zawartości wszystkich rejestrów,
PLISH - przesłanie do stosu wartości bezpośredniej,
PtSHA - przesłanie do stosu zawartości wszystkich rejestrów,
R°L, ROR, RCL, RCR, SHL/SAL, SHR, SAR - rozkazy przesunięć; wielkość przecięcia (liczba bitów) jest określona w sposób bezpośredni w trzecim bajcie rozkazu.