[ glamoc @ 27.07.2007. 22:06 ] @
naime
da bih presao sa jedne na drugu nit ja na steku niti sacuvam PSW i adrese
segmenta i offseta a onda kad udjem u prekidnu rutinu ja postavim da mi sp i ss
ukazuju na stek na cijem se vrhu nalaze upravo psw i ss i sp tako da kad se bude
izlazilo iz prekidme rutine program bi trebalo da se program nastavi upravo tamo gde pokazuje vrh steka
ali on me izbaci iz programa bez ikakvog obavestenja.
Mozda je problem u samom steku zapravo koliko je velika
jedna lokacija na steku stek 1 ili 2 bajta kako to da saznam.
Pokusao sam da eksperimentisem sa instrukcijom ret i retn ali ni to nece da radi
Naime ovaj prosti programcic bi trebalo da pomocu instrukcije ret skoci u proceduru aa
ali izbaci sistemsku gresku sa porukom The NTVDM CPU has encountered
an ilegal instruction CS:0000 IP:0077 OP:f0 37 05 0e 02...
nemam pojma u cemu je problem isprobao sam sve moguce kombinacije
resenje nisam nasao te vas molim za pomoc..
#include<iostream.h>
#include<dos.h>
void aa(){
cout<<"Operativni Sistemi";
}
main(){
unsigned a,b;
a=FP_OFF(aa);
b=FP_SEG(aa);
asm{
//push word ptr b
push word ptr a
}
asm retn
}