162
5. Rozkazy mikroprocesorów 8086/8088
INT - skok do podprogramu obsługi przerwania,
INTO - skok do podprogramu obsługi przerwania, jeśli wystąpiło przepełnienie, IRET- powrót z podprogramu obsługi przerwania do miejsca jego wywołania.
INT (ang. interrupt)
skok do podprogramu obsługi przerwania
Operacja: SP—SP-2;nextM[SP + l]oM[SP]♦-znaczniki; next IF—0; TH—0; SP—SP-2; ncxt M[SP + l]oM[SP]—CS; next CS—((numer_przerwania)*4-f 2); SP—SP-2; ncxt M|SP+ l]oM[SPj—IP; next IP—(numer_przerwania)*4
Znaczniki: OF DFIF TF SF ZF AF PF CF
- - o o..... 4
Rozkaz powoduje wykonanie pośredniego skoku, przez wektor przerwań do podprogramu obsługi przerwania. W pewnym sensie rozkaz jest połączeniem rozkazów PUSHF oraz CALL międzysegmcntowego. Znaczniki oraz rejestry CS i IP zostają przesłane do stosu, znaczniki IF i TF wyzerowane, a następnie do rejestrów CS i IP jest ładowany odpowiedni wektor przerwania (czyli 32-bitowy adres logiczny podprogramu obsługi przerwania). Adres wektora przerwań jest wyliczany jako (numer _ przerwania)*4. Numerprzerwania jest liczbą całkowitą z zakresu 0...255.
Numer przerwania = 3 1100 1100 Liczba taktów - 52.
INT 3 ; skok do obsługi przerwania nr 3 +
Numer przerwania * 3 11001101 numer_przerwania
Liczba taktów - 51.
INT 21H ; skok do obsługi przerwania nr 21H ♦
INTO (ang. interrupt if overflow)
skok do podprogramu obsługi przerwania jeśli jest przepełnienie
Operacja: OF= l=>(SP-SP-2; next M[SP +1 joM[SP]-znaczniki;next IF-0; TH-0; SP-SP-2; next M[SP + l]oMISP)-CS; next CS-(10H +2); SP-SP-2; next M[SP + l]oM[SP]«-IP; next IP—10H)
Znaczniki: OF DF IF TF SF ZF AF PF CF
0 0
Jeżeli znacznik przepełnienia OF=l to rozkaz INTO jest równoważny rozkazowi INT 4 (adres wektora przerwania = 10H). Jeżeli OF = 0, to jest wykonywany kolejny rozkaz bez uaktywniania podprogramu obsługi przerwania.
11001110
Liczba taktów - 53 dla skoku wykonanego, 4 dla skoku nie wykonanego.
Przykład
ADD AX, BX
INTO ; zniszczony bit znaku! â–¼
IRET (ang. interrupt return)
powrót z podprogramu obsługi przerwania ___
Operacja: IP-M[SP 4- l]o[SP]; next SP—SP + 2; CS-M[SP + l]o[SP]; next SP—SP + 2; znaczniki— M[SP + l]o[SP]; next SP—SP + 2;
Znaczniki: OF DF IF TF SF ZF AF PF CF
xxxxxxxxx jhpjMgp
Rozkaz pozwala powrócić z podprogramu obsługi przerwania do miejsca wywołania podprogramu rozkazem INT (w przypadku przerwania programowego), lub do miejsca przerwania programu przez przerwanie sprzętowe. Rozkaz powoduje załadowanie rejestrów IP, CS i rejestru znaczników wartościami pobranymi ze stosu. Wskaźnik stosu SP zostaje uaktualniony.
11001111
Liczba taktów - 24.
Przykład
OBSLUGAPRZERWAN SEGMENT
•••
PRZERWANIE21H LABEL FAR
• ••
IRET
OBSLUGAPRZERWAN ENDS ♦
Rozkazy sterujące w programie różnymi dodatkowymi funkcjami procesora.
Rozkazy sterowania znacznikami CF, DF i IF
STC - ustawienie znacznika przeniesienia,
CLC - wyzerowanie znacznika przeniesienia,
CMC - zanegowanie znacznika przeniesienia,