Mikroprocesory 8086 i 8088 majÄ… dokÅ‚adnie ten sam zbiór rozkazów, traktowany obecnie jako typowy dla wczeÅ›niejszych procesorów 8-bilowych (np. 8080/8085). Zbiór ten jest uzupeÅ‚niony o nowe rozkazy, z których należaÅ‚oby wymienić â–
- mnożenie i dzielenie liczb dwójkowych oraz w kodzie BCD ze znakiem i bez znaku,
- przesyłanie i porównywanie łańcuchów' (tablic) o wielkości do 64 KB, 1
- programowe generowanie przerwań, I
- instrukcje ułatwiające programowanie systemów wieloprocesorowych. 1
Rozkazy’ mikroprocesorów 8086/8088 w jednolity sposób traktują różne typ argumentów. Prawie każdy rozkaz może przetwarzać zarówno bajty, jak i słowa. Rejestry, pamięć bądź argumenty bezpośrednie mogą być specyfikowane w większo rozkazów w jednakowy sposób. W szczególności zmienne mogą być dodawane, odejmowane, przesuwane, porównywane itd. bezpośrednio w pamięci, bez uprzedniego pobierania ich do rejestrów. Pozwala to na znaczne zmniejszenie (w stosunku do mikroprocesorów 8080/8085) czasu pracy i długości programu. Poszczególnym rozkazom maszynowym są przypisane nazwy mnemoniczne będące skróconym zapisem czynności wykonywanej przez rozkaz. Ogółem jest dostępnych około 100 mnemonic/nych (symbolicznych) kodów rozkazów (np. MOV - ang. move, LEA - ang. load effectwe ad-dress ), przy czym kodom symbolicznym jest przyporządkowanych wiele różnych kodów dwójkowych, zależnych zazwyczaj od argumentów tych rozkazów. Na przykład istnieje aż 28 różnych rozkazów MOV; prześlij bajt z pamięci do rejestru, załaduj bezpośrednio słowo do rejestru itd. Istnieje ponad trzysta dwójkowych rozkazów mikroprocesorów 8086/8088. Ogólnie zbiór rozkazów można podzielić na
- rozkazy transmisji danych,
- rozkazy arytmetyczne i logiczne (w tym rozkazy przesunięć),
• rozkazy przetwarzające łańcuchy (tablice), m
- rozkazy sterujące skokami oraz wywołujące podprogramy.
5. /. Informacje ogólne
powered by
Mi sfbl
rozkazy organizujące pętle,
rozkazy dotyczące przerwań,
inne rozkazy, sterujÄ…ce pracÄ… procesora.
c i i Format rozkazów
przykładową budowę rozkazów mikroprocesorów 8086/8088 przedstawiono na rys. 5.1. Długość rozkazu może wynieść 1...6 bajtów. Rozkaz może być bezargumentowy, posiadać jeden lub dwa argumenty. Tylko jeden z argumentów może być argumentem
0
a)
b)
Bajt 1 Bajt 2 Bajt 3 Bajt 4 Bajt 5 Bajt 6
Bajt 1 Bajt 2
mod
Kod operacji
w
reg
r/m
Mniej znaczÄ…cy bajt adresu lub
Bardziej znaczÄ…cy bajt adresu lub
Mniej znaczÄ…cy bajt danej
Bardziej znaczÄ…cy bajt danej
0
Kod
operacji
Rys. 5.1. Ogólna budowa rozkazu maszynowego mikroprocesorów 8086/8088: a) przykład formatu z krótkim kodem operacji, b) przykład formatu z długim kodem operacji
pobranym z pamięci operacyjnej. Dopuszczalne kombinacje argumentów przedstawiono w tabl. 5.1.
Tablicą 5.1. Dopuszczalne kombinacje argumentów
1 argument
2 argument
Uwagi
rejestr rejestr rejestr rejestr pamięć pamięć Pamięć ^2^*ć bezpośrednia
rejestr
pamięć
wartość bezpośrednia rejestr
wartość bezpośrednia
rozkaz bezargumentowy
Jeżeli ogólna postać dwuargumentowego rozkazu jest następująca
kodmnemoniczny argumentl, argument_2
le\ ^rZetAvarzan*e argumentów odbywa się począwszy od prawego argument u do naVC?° ar8liment_I> co oznacza, że w tym przypadku wynik operacji jest umieszczany miejscu lewego argumentu. Poszczególne pola rozkazu wyszczególnione na rys. 5.1 aJ3 następujące znaczenie