assembler€86ˆ 5

assembler€86ˆ 5



150


5. Rozkazy mikroprocesorów 8086/8088

RET (ang. return from procedurÄ™)

powrót z podprogramu_

Operacja: zob. opis Znaczniki: bez zmian

Rozkaz RET powoduje przekazanie sterowania z podprogramu do rozkazu następującego bezpośrednio po rozkazie CALL, który wywołał podprogram. Dokonuje się to przez

-    pobranie ze stosu adresu kontynuacji zapisanego rozkazem CALL (offset lub offset

i segment w zależnoÅ›ci od tego czy podprogram zostaÅ‚ wywoÅ‚any wewnÄ…trz segmentu, czy z innego segmentu),    '

-    zaÅ‚adowanie tym adresem wskaźnika rozkazów IP (lub także rejestru CS.)

Z każdym rozkazem CALL musi być zwiÄ…zany odpowiedni rozkaz RET. Przy poÅ›rednim wywoÅ‚aniu podprogramu trzeba zwrócić szczególnÄ… uwagÄ™ na to, aby typ rozkazu CALL (NEAR lub FAR) byÅ‚ zgodny z typem rozkazu RET. Asembler generuje wÅ‚aÅ›ciwy typ rozkazu RET, zgodnie z zadeklarowanym przez programistÄ™ typem podprogramu. Jeżeli przekazanie parametrów do podprogramu odbyÅ‚o siÄ™ za poÅ›rednictwem stosu (PUSH), to rozkaz RET z parametrem (zob. opcje powrotu z parametrem) pozwala automatycznie zwolnić zajÄ™ty dodatkowo fragment stosu.

Powrót z podprogramu wewnÄ…trz segmentu Operacja: IP<-M[SP + l]oM[SP]; ncxt SP«-SP + 2 1100 0011 Liczba taktów - 8.

Przykład

PROGRAM SEGMENT

• ••

CALL PODPROGRAM

PROC NEAR • • •

RET

ENDP

•• •

ENDS


♦


PODPROGRAM

PODPROGRAM

PROGRAM

Powrót z podprogramu wewnątrz segmentu z parametrem

Operacja:IP«-M[SP + l]oM[SP); next SP<-SP + 2; next SP«-SP + data_highodata_low 1100 0011    datalow datahigh

Liczba taktów -12.

powered by

Mi sik)l

5.5. Rozkazy sterowania skokami

Przykład

PROGRAM

SEGMENT • ••

PODPROGRAM

MOV AX, OFFSET ZMIENNA PUSH AX

CALL PODPROGRAM

• ••

PROC NEAR

PODPROGRAM

• ••

RET 2 ENDP

PROGRAM

• ••

ENDS ♦

Powrót z podprogramu z innego segmentu Operacja: IP^M[SP + l]oM[SP]; next SP«-SP + 2 CS«-M[SP + l]oM[SP]; next SP+-SP + 2

1100 1011 Liczba taktów -18.

Przykład

EXTRN PODPROGRAM:FAR

PROGRAM

SEGMENT

• ••

CALL PODPROGRAM

PROGRAM

• • •

ENDS

PROCEDURY

• ••

SEGMENT

PUBLIC PODPROGRAM

PODPROGRAM

• ••

PROC FAR

PODPROGRAM

•••

RET

ENDP

PROCEDURY

• • •

ENDS ♦

Powrót z podprogramu z innego segmentu z parametrem °Pcracja: IP-M[SP + l]oM[SP]; next SP.-SP + 2 Cs<-M[SP + l|oM[SP]; nexl SP*-SP + 2


Wyszukiwarka

Podobne podstrony:
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady PUSH ZMIENNA
assembler?86? 5 130 5. Rozkazy mikroprocesorów 8086/8088 Przykłady SAR ZMIENNA, 1 SAR BAJT[BP +1],
assembler?86? 5 170 5. Rozkazy mikroprocesorów 8086/8088 Mikroprocesor 80286 W (rybie adresacji rz
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 8 156 5. Rozkazy mikroprocesorów 8086/8088 JNC (ang.jump if no carry ) skok względny
assembler?86? 3 166 5. Rozkazy mikroprocesorów 8086/8088 STI (ang. set intemipt enable flag) ustaw
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? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
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? 4 108 5. Rozkazy mikroprocesorów 8086/8088 PrzykÅ‚ady DEC SI DEC AX    
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? 4 128 5. Rozkazy mikroprocesorów 8086/8088 Przesunięcie logiczne w prawo o 1 bit Ope

więcej podobnych podstron