146 5. Rozkazy mikroprocesorów 8086/8088
Tablica 5.11. Przykładowe wykorzystanie skoków warunkowych
Skok wykona się.gdy Porównywane argumenty
bez znaku ze znakiem
AX = BX |
JE lub JZ |
JE lub JZ |
AX*BX |
JNE lub JNZ |
JNE lub JNZ |
AX>BX |
JA lub JNBE |
JG lub JNLE |
AX > BX |
JAE lub JNB |
JGElubJL* |
AX<BX |
JB lub JNAE |
JL lub JNGE |
AX < BX |
JBE lub JNA |
JLE lub JNG |
Wszystkie adresy skoków warunkowych muszą mieścić się wewnątrz segmentu i nie mogą być odległe od adresu pierwszego bajtu następnego rozkazu o więcej niż -128 lub 4-127. Adres skoku jest zakodowany w postaci jednobajtowego dystansu (ang. dis-placment), który w momencie wykonywania skoku jest rozszerzany do 16 bitów i dodawany (z uwzględnieniem znaku) do zawartości wskaźnika IP. Do grupy rozkazów skoków należy również zaliczyć rozkazy przerwań programowych oraz rozkazy organizujące pętle. Ze względu na ich specyfikę, zostały omówione w oddzielnych punktach.
JMP (ang.jump) zwykły skok bezwarunkowy
Operacja: zob. opis Znaczniki; bez zmian
Rozkaz powoduje przekazanie sterowania w inne miejsce programu określone adresem (etykietą) będącym argumentem. Rozkazy skoków bezwarunkowych przedstawiono w tabl. 5.12.
Tablica 5.12 Rodzaje skoków bezwarunkowych
Skok bezpośredni |
Skok pośredni przez | ||||
krótki |
długi |
rejestr |
pamięć | ||
WewnÄ…trz segmentu |
tak |
tak |
tak |
tak | |
Między segmentami |
nie |
tak |
nie |
tak |
Skok bezwarunkowy bezpośredni krótki wewnątrz segmentu Operacja: IP<-IP + disp
JllOlOll disp
przy czym -128 < disp <127 Liczba taktów -15.
JMP SHORT ETYKIETA ; SHORT - zob. rozdz. 4 JMP SHORT ETYKIETA BLISKA
powered by
5.5. Rozkazy sterowania skokami
Skok bezwarunkowy bezpośredni długi wewnątrz segmentu Operacja: IP <- IP + disp_highodisp_low 11101001 dispjow disp high
Liczba taktów -15.
Przykład
JMP ETYKIETA BLISKA
JMP ETYKIETA *
Skok bezwarunkowy bezpośredni między segmentami
Operacja: CS *- segment highosegment low; IP <- offsethighooffsetlow 11101010 offset Iow .offset high seg low seg high
Liczba taktów -15.
Przykład
JMP ETYKIET ADALEKA
JMP FAR PTR ETYKIET ABLISKA «
Skok bezwaninkowy pośredni przez rejestr wewnątrz segmentu Operacja: IP *- regló 11111111 11100 reg
Liczba taktów -11.
Przykład
JMP BX JMP DI JMP BP
JMP AX ♦
Skok bezwaninkowy pośredni przez pamięć wewnątrz segmentu Operacja: IP M[ea + ljoMfea]
U1J_U11 modlOOr/m addr low addr high
Liczba taktów -18 + takty do obliczenia adresu efektywnego.
Przykład
JMP ZMIENNA SLOWO[BX + 8]
JMP WORD PTR [DI] 4
Skok bezwarunkowy pośredni przez pamięć między segmentami Operacja: IP ^ M[ea + l]oM[ea]; CS — M[ea + 3]oM[ea + 2]