Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako iret-u promeniti povratnu adresu

[es] :: Asembler :: Kako iret-u promeniti povratnu adresu

[ Pregleda: 3406 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gaja_ns
Nebojsa Gajinov

Član broj: 27359
Poruke: 3
*.dial.InfoSky.Net



Profil

icon Kako iret-u promeniti povratnu adresu27.05.2004. u 11:30 - pre 241 meseci
Kako prilikom povratka iz prekida (iret) promeniti povratnu adresu kako se program ne bi vrteo u krug?
 
Odgovor na temu

stalker
Branko Kokanovic
Beograd

Član broj: 11897
Poruke: 606
*.drenik.net



+2 Profil

icon Re: Kako iret-u promeniti povratnu adresu27.05.2004. u 13:48 - pre 241 meseci
Da bi promenio povratnu adresu, trebace ti dosta akrobacija. Ne znam za sta radis, ali ces morati da znas specifikacije neke. Teorijski, na steku se, pri ulasku u prekidnu rutinu cuvaju registri,..., KAO i povratna adresa. E, sad, treba da znas gde na steku. Ukoliko je na vrhu, jedno (ili vise za celu adresu, opet zavisi od arhitekture) pop, malo aritmetike, zamena i push ce uraditi posao.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
*.direcpceu.com

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Kako iret-u promeniti povratnu adresu27.05.2004. u 19:42 - pre 241 meseci
Hehe, ako se ne varam ( mada, mozda i gresim... ) to bi bio FTN, Novi Sad, E2, 11. zadatak iz assembler-a... Jesam li u pravu ?

E, pa fora je u tome sto ti u tom prekidu koji nastaje posle deljenja nulom trebas da pokupis povratnu adresu sa steka, i uvecas je za 2 ( toliko bajta zauzima naredba div ), a mozes i da uzmes offset neke labele ili neke naredbe posle div-a i onda jos trebas tu izmenjenu adresu da vratis na stek...

Evo ti primer procedure za prekid:
Code:

     div bx

......

prekid proc
     cli
     push ax
     push ds
     mov ax,@DATA
     mov ds,ax
     mov ax,0b800h
     mov es,ax
     lea si,poruka
     mov di,160*5   ; ovo ovde menjaj po zelji, to je polozaj sa koga pocinje stampanje poruke
     mov ah,Eh       ; ovo je boja poruke
     cld

znakovi:               ; pocetak stampanja poruke
     lodsb
     and al,al
     jz kraj_prekid
     stosw
     jmp znakovi
kraj_prekid:
     pop ds
     pop ax
     pop si                ; uzimas povratnu adresu sa steka   
     inc si                
     inc si                 ;uvecavas je 2x
     push si               ; vracas povratnu adresu na stek
     sti
     iret
prekid endp


Eto... Posle ovoga program ce nastaviti da se izvrsava od sledece naredbe posle div-a...

Srecno!
 
Odgovor na temu

gaja_ns
Nebojsa Gajinov

Član broj: 27359
Poruke: 3
*.InfoSky.Net



Profil

icon Re: Kako iret-u promeniti povratnu adresu28.05.2004. u 12:53 - pre 241 meseci
Dobro de upravu si, hvala na odgovoru ali sam nasao laksi nacin. Samo po pozivu prekida push-jes BP i onda je adresa koju treba da menjas [BP+2].
Da nemas mozda 12 zadatak?
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
*.direcpceu.com

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Kako iret-u promeniti povratnu adresu28.05.2004. u 15:49 - pre 241 meseci
12a imam, juce sam ga odbranio, a 12b sam skoro zavrsio... Mada ti ne preporucujem uzimanje moga koda, posto ti garantujem da se sa tim kodom samo je mogu snaci... ( cak mi je na jednoj vezbi asistent rekao da ne moze da pohvata sta sam uradio, a posto je sve radilo super pisao je da sam odbranio vezbu )...

Good luck!
 
Odgovor na temu

[es] :: Asembler :: Kako iret-u promeniti povratnu adresu

[ Pregleda: 3406 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.