assembler€86ˆ 4

assembler€86ˆ 4



148


5. Rozkazy mikroprocesorów 8086/8088

11111111    mod 101 r/m addrjow    addrhigh

Liczba taktów - 24 + takty do obliczenia adresu efektywnego.

Przykład

JMP ZMIENNA PODWOJNE SLOWO[BP + 2] • JMP DWORD PTR [SI]

CALL (ang. cali a procedurę ) wywołanie podprogramu

Operacja: zob. opis Znaczniki: bez zmian

Rozkaz powoduje wywołanie podprogramu, czyli przekazanie sterowania do podprogramu z równoczesnym (automatycznym) zapamiętaniem w stosie informacji

0    adresie powrotu do programu wywoÅ‚ujÄ…cego. Adres podprogramu może wynikać wprost z argumentu rozkazu (skok bezpoÅ›redni) lub może być pobrany z rcjestru(ów) lub pamiÄ™ci (skok poÅ›redni). WywoÅ‚ywany podprogram mo/c znajdować siÄ™ w tym samym segmencie (podprogram bliski - NEAR) co program wywoÅ‚ujÄ…cy i wtedy jego adres jak i adres powrotu zapamiÄ™tany w stosie ogranicza siÄ™ do 16-bitowego adresu wzglÄ™dem poczÄ…tku segmentu, lub w innym segmencie (podprogram daleki - FAR)

1    wtedy oba adresy muszÄ… być 32-bitowe (część SEGMENT i OFFSET). Możliwe opcje rozkazu CALL zestawiono w tabl. 5.13. Aby byÅ‚ możliwy powrót do programu wywoÅ‚ujÄ…cego, podprogram musi być zakoÅ„czony odpowiednim rozkazem RET (NEAR lub FAR).

Tablica 5.13. Rodzaje rozkazu CALL

Skok

Skok pośredni przez

Adres powrotu

bezpośredni

rejestr

pamięć

w stosie

WewnÄ…trz segmentu

tak

tak

tak

1 słowo

Między segmentami

tak

nie

tak

2 słowa

Bezpośrednie wywołanie podprogramu wewnątrz segmentu

Operacja: SP«—SP-2; next M[SP + l]oM[SP]+-IP; next IP«-IP 4-disp highodisp low

1110 1000 displow disphigh Liczba taktów - 19.

Przykład

CALL PODPROGRAM BLISKI

CALL NEAR PROC    â™¦

Bezpośrednie wywołanie podprogramu między segmentami

Operacja: SP*-SP-2; next M[SP + l]oM[SP] «-CS; next CS<-scg_highoseg_low;

powered by

5.5. Rozkazy sterowania skokami


Mi si461

next SP«-SP-2; nexl M[SP + l]oM[SP]«-IP; next IP<-offset_highooffseTTÓ^^^^^^â„¢ |j001 1010    offsetjow    offset_high seg_low    seg_high

Liczba taktów - 28.

Przykład

CALL PODROGRAMDALEKI

CALL FAR PROC    4

Pośrednie wywołanie podprogramu przez rejestr wewnątrz segmentu Operacja: SP.-SP-2; next M[SP + l]oM[SP]«-IP; next IP«-regl6

11111111    11 010 reg

Liczha taktów -16.

Przykład

CALL BX CALL Dl CALL BP

CALL CX    4

Pośrednie wywołanie podprogramu przez pamięć wewnątrz segmentu Operacja: SP.-SP-2; next M[SP+ l]oM[SP]«-IP; next IP*-M[ea + l]oM[ea]

11111111    modOlOr/m addrlow    addrhigh

Liczba taktów - 21 + takty do obliczenia adresu efektywnego.

Przykład

CALL WSKAZNIK[BX + 8]

CALL WORD PTR [BP]    â™¦

PoÅ›rednie wywoÅ‚anie podprogramu przez pamięć miÄ™dzy segmentami Operacja: SP.-SP-2; next M[SP + l]oM[SP]«-CS; next CS^-M[ea + 3]oM]ea + 2]; next SP.-SP-2; nett M[SP + l]oM[SP]«-IP; next IP«-M[ea + l]oM[ea]

[lin 1111    mod011r/m addrlow    addrhigh

Liczba taktów - 37 + takty do obliczenia adresu efektywnego.

Przykład

CALL ZMIENNA_PODWOJNE_SLOWO[SI + 2]

♦


CALL DWORD PTR [BP]


Wyszukiwarka

Podobne podstrony:
assembler?86? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
assembler?86? 4 108 5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady DEC SI DEC AX    
assembler?86? 4 128 5. Rozkazy mikroprocesorów 8086/8088 Przesunięcie logiczne w prawo o 1 bit Ope
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 3 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady PUSH ZMIENNA
assembler?86? 6 92    5. Rozkazy mikroprocesorów 8086/8088 Zamiana miejscami zawart
assembler?86? 9 98 5. Rozkazy mikroprocesorów 8086/8088 Pojęcie rozpakowanego i normalnego kodu BC
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 7 114    5. Rozkazy mikroprocesorów 8086/8088 Mnożenie zawartoÅ›ci aku
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 1 122 5. Rozkazy mikroprocesorów 8086/8088 OR DX, STALA_EQU OR CL, 8   &nb
assembler?86? 2 124 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje logiczne mnożenie odpowi
assembler?86? 5 130 5. Rozkazy mikroprocesorów 8086/8088 Przykłady SAR ZMIENNA, 1 SAR BAJT[BP +1],
assembler?86? 7 134 5. Rozkazy mikroprocesorów 8086/8088 Przykłady MOVCL, 11 ROR ZMIENNA[BP], CL
assembler?86? 8 136 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje przesunięcie cykliczne w
assembler?86? 9 138 5. Rozkazy mikroprocesorów 8086/8088 mentu do przetwarzania. W zależności od k

więcej podobnych podstron