Zrozumienie działania instrukcji lcall i ret w asemblerze 51' ? co się dzieje po powrocie?
Asembler, 51' pytanie
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
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.