[ 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 } |