Zrozumienie działania instrukcji lcall i ret w asemblerze 51' ? co się dzieje po powrocie?

Asembler, 51' pytanie





Poprzedni Następny
Wiadomość
Spis treści
From: "TomekG" <Tomaszger_at_nospam_poczta.onet.pl>
Subject: Asembler, 51' pytanie
Date: Thu, 10 May 2001 09:55:24 +0200


Witam,
Mam za zadanie napisanie pewnego programu (na sucho, bez mozliwosci
sprawdzenia). Wykorzystujac funkcje: "lcall etykieta", skaczemy do danej
etykiety, wykonujemy podprogram i komenda "ret" wracamy do nastepnego
wiersza po "lcall".

Przykladowy program wygladalby nastepujaco:

A
lcall skocz
B

skocz: jmp dalej

dalej: costam
costam
ret

Czy po "ret", program znajdzie sie na B, czy moze to "jmp" jakos zaburzylo
prace programu i teraz "ret" odnosi sie do czegos innego.

Za ewentualne odpowiedzi dziekuje.
pozdrowienia
TomekG





Poprzedni Następny
Wiadomość
Spis treści
From: "TOMS" <tomsozo_at_nospam_poczta.onet.pl>
Subject: Re: Asembler, 51' pytanie
Date: Thu, 10 May 2001 09:32:51 +0200



Czy po "ret", program znajdzie sie na B, czy moze to "jmp" jakos zaburzylo
prace programu i teraz "ret" odnosi sie do czegos innego.
Podczas wywoływania procedury rozkazem lcall adres powrotu odkładany jest na
stos.
Jmp nie wpływa na stos więc o ile w międzyczasie nie namieszasz na stosie
program powinien
po ret wykonać B.

Pozdrowienia.