Ajd da probam da pomognem kad me vec proziva ovaj sekt0r :)
Prvo da ti kazem da ja tvoj kod nista ne razumem a iskreno nisam se ni trudio mnogo,
dosta mi je mog sto ga gledam svaki dan :)
Sto se tice tvog problema, evo kako da sprecis da ti wsprintf ispisuje gluposti
ispod szTEMP db ? dodaj db 0, znaci
Code:
o_frmt1 db '%S',0
szTEMP db ?
db 0
Svi stringovi mora da se zavrsavaju sa znakom NULL tj NULA tj 0. Kod tebe nema nule
pa funkcija cita neku tamo memoriju sve dok ne naidje do tog znaka i zato ti izbacuje djubre.
Inace ako oces string (niz bajtova) uvek definisi ovako
Code:
szString db 128 dup(?)
gde je szString niz od 128 bajtova u koga mozes da smestis max 127 karaktera + NULL na kraju.
Jos jedan detalj, wsprinf() je funkcija koja koristi C konvenciju pozivanja, to znaci
da parametre sa steka moras ti da obrises posle poziva, znaci dodaj poslednju liniju
Code:
PUSH EDI
PUSH offset o_frmt1
PUSH offset sznumber1
CALL wsprintf
add esp,3*4 ; cisti stek, 3 parametrba puta 4 bajta svaki
inace ce program da ti crashuje pre ili kasnije (verovatno pre)
I zapamti:
Pravlio broj 1. kad nesto neide, uvek prvo pogledaj dokumentaciju
Pravilo broj 2. ako i dalje neide, pogledaj opet malo bolje dokumentaciju.
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.