FFFF3 |
10 |
starszy bajt danej wpisywanej do SP |
FFFF4 |
FB |
El (odblokowanie przerwań) |
FFFF5 |
9C |
PUSHF (zapisz na stosie rejestr statusowy) |
FFFF6 |
9D |
POPF (odczytaj ze stosu rejestr statusowy) |
FFFF7 |
BA |
MOV DX,#C84AH |
FFFF8 |
4A |
młodszy |
FFFF9 |
C8 |
starszy bajt zapisywany do DX |
FFFFA |
EF |
OUTW |
FFFFB |
EA |
JMP (skok bezwzględny poza segment) |
FFFFC |
00 |
młodszy bajt przesunięcia |
FFFFD |
04 |
starszy bajt - ładowane do IP |
FFFFE |
00 |
młodszy bajt segmentu |
FFFFF |
00 |
starszy bajt - ładowane do CS |
r
Pierwszym rozkazem jest załadowanie wskaźnika stosu SP. Jest to oczywiście przesunięcie , które należy odnieść do zawartości rejestru segmentowego stosu SS. Ponieważ po wyzerowaniu SS=0 więc pierwsze 16- bitowe słowo zapisywane będzie na stosie pod lokacjami OOFFE i ))FFF. Stos będzie rozbudowywał się od ostatniej lokacji wgłąb dysponowanego obszaru pamięci RAM. Procesor rozpoczyna pracę od załadowania SP, aby w przypadku akceptacji przerwania, zapisać 6- bajtową informację do lokacji obsadzonych przez pamięć RAM.
Przerwania maskowalne odblokowuje instrukcja El. Po jej wykonaniu zapali się dioda INTE na CPU. Przerwania niemaskowalne pP. przyjmuje zawsze. Oba przerwania są akceptowane po zakończeniu aktualnie wykonywanej instrukcji.
Dlatego też przerwanie NMI (niemaskowalne) zostanie zaakceptowane po rozkazie MOV SP (z przedrostkiem). Oczywiście dla prawidłowej obsługi przerwań konieczna jest obecność właściwych wektorów, w tabeli wektorów przerwań i procedur obsługi rozpoczynających się od adresów zawartych w tych wektorach.
Instrukcja PUSHF i POPF zostały umieszczone w celu zaobserwowania stanu początkowego obu bajtów rejestru statusowego. Rozkaz POPF nie jest do tego konieczny, ale został wstawiony w celu przywrócenia poprzedniej wartości rejestru SP.
W celu obserwacji operacji w 64kB przestrzeni we-wy umieszczono instrukcję OUT W (rozmiar słowa, port wyjścia adresowany przez rejestr DX uprzednio zapisany). Zapisuje ona stan początkowy obu bajtów akumulatora (AL. i AH) pod lokacjami (DX) i (DX+1). Mimo określenia 16- bitowego rozmiaru pP. 8086 przy operacjach we-wy operuje zawsze bajtami korzystając wyłącznie z bitów 0-7 szyny danych (dla 8088 nie ma innej możliwości).
Nastawione rozkazy kończy instrukcja skoku bezwarunkowego, pozasegmentowego. W przeciwieństwie do skoków wewnątrzsegmentowych (tzw. bliskich), gdzie stosuje się adresację względną w stosunku do bieżącego stanu IP (za KO 1 bądź 2 bajty przesunięcia w kodzie U2), rozkaz skoku dalekiego (poza segment) ustala bezpośrednio nowe wartości dla rejestrów IP oraz CS (4 bajty za KO).
Procesor akceptuje żądanie zawieszenia HOŁD po każdym cyklu magistrali (dokładniej po każdym cyklu magistrali pP. 8086 dlatego nie akceptuje HOŁD w trakcie przesyłania 16- bitowego słowa).
Jeśli chcemy „ochronić” dany rozkaz to umieszczamy przed nim przedrostek LOCK. Ma to znaczenie, gdy magistralę może przejąć inny pP., a dotyczy instrukcji