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

Generisanje dogadjaja sa tastature

[es] :: Asembler :: Generisanje dogadjaja sa tastature

[ Pregleda: 2851 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glamoc

Član broj: 125620
Poruke: 346
*.artcommunication.co.yu.



+1 Profil

icon Generisanje dogadjaja sa tastature22.05.2007. u 22:05 - pre 205 meseci
naime imam na faksu neki zadatak koji generise dogadjaje sa tastature i nista mi nijejasno.Zapravo slabo poznajem asembler i ne razumem sledeci kod
push word ptr es:0026h
pop word ptr oldKbdSEG
push word ptr es:0024h
pop word ptr oldKbdOFF
Upomoc ako imate neku dobru literaturu za asm kazite
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
217.26.79.*

ICQ: 208550327


+14 Profil

icon Re: Generisanje dogadjaja sa tastature24.05.2007. u 18:20 - pre 205 meseci
Evo malo definicija:

word ptr val - govori asm da val posmatra kao word ( 16-bitna vrednost ).

push a
pop b

ovo je ekvivalentno: b = a

znaci, kod tebe je:

oldKbdSEG = es:0026h ; mislim da ovako cuvas keyboard segment za kasnije
oldKbdOFF = es:0024h ; offset ( primeti da je razlika 2 bajta [ 16 bita ] izmedju 0024h i 0026 h pa zbog toga zahteva WORD PTR )

ovo je standardan kod za cuvanje pocetka segmenta i segmenta

ako imamo segment i adresu offseta

es:bx

mov mestoUmemoriji, word ptr bx - pocetak segmenta
mov mestoUmemoriji + 2, word ptr es - segment

Uff... i ja sam, inace, pocetnik ali mislim da ce ovo da ti pomogne ( bar malo )
EOF
 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
*.artcommunication.co.yu.



+1 Profil

icon Re: Generisanje dogadjaja sa tastature27.05.2007. u 00:20 - pre 205 meseci
Ok pomoglo mi je mnogo ali da li tacno znas znacenje ovoga dela
es:0026h pri cemu je vrednost registra es=0
pozdrav
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
217.26.79.*

ICQ: 208550327


+14 Profil

icon Re: Generisanje dogadjaja sa tastature27.05.2007. u 01:31 - pre 205 meseci
Teorija je dosta duboka...

es je ( extra segment ). Deo u memoriji. Segmenti su komplikovana tema ali, recimo da se memorija deli na segmente.
npr...

Ulica moze biti segment... a broj kuce je ova druga vrednost.... grad je RAM memorija koja se sastoji od kuca ( memorijskih lokacija ), ali, delimo ga na ulice ( segmente ) da bi se lakse snasli ( al ga ja objasni :) )

Ulica:broj = 5

es:1234 npr... es = 0 'neshto' = 1234

znaci, konacna adresa u memoriji (RAM) je 1234

Razmisljaj o tome kao da ti podatak postavljas na neko mesto u mem koje je odredjeno adresom ( u ovom slucaju ) 1234 ( 0 + 1234 )

Art of Assembly ( google-uj ga ) opasna knjiga. Ako te ne mrzi.. procitaj, vidi, nauci...




EOF
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Generisanje dogadjaja sa tastature27.05.2007. u 02:45 - pre 205 meseci
Da dodam nesto vezano za push i pop instrukcije kao i za Stack.
Inace je nisam pocetnik.
Stack je deo memorije koji se cesto koristi za cuvanje podataka (u Windowsu i za postavljane dodatnih argumenata pri pozivanju funkcije).
Za upis i citanje Stack memorije se koriste instrukcije Push (cuvanje) i Pop (uzimanje).
Ono sto je upisano cita se obrnutim redom (zadnji podatak se cita prvi) bez preskakanja.

primer
Code:

mov eax,2 ; 2 u eax 
push eax ; 2 u stack
mov eax,3 
push eax ; 3 u stack
xor eax,eax ; cistimo eax
pop eax ; eax je sad 3
pop eax ; eax je sad 2

Isto je vazna i duzina podataka. Npr eax je cervorobajtni registar i kad uzimamo podatak treba i o tome da vodimo racuna. Naprimer ako prvo unesemo dvobajtni podatak pa cetvorobajtni kada uzimamo podatak prvo ocekujemo 4 pa 2 bajta. Ovde postoje i neki trikovi , ako naprimer hocemo da podelimo dword (4 bajta) na 2 worda (2) bajta uradimo
Code:

push m_dword
pop m_word1
pop m_word2

Pri radu sa Stack-om registar ESP je stack pointer.
Isto treba voditi racuna o balansiranju Stack memorije. U jednoj funkciji (do ret instrukcije) treba uzeti iz Stak-a isti broj bajtova koliko je upisano.
Toliko
Pozdrav



 
Odgovor na temu

glamoc

Član broj: 125620
Poruke: 346
*.artcommunication.co.yu.



+1 Profil

icon Re: Generisanje dogadjaja sa tastature27.05.2007. u 09:55 - pre 205 meseci
E puno hvala a,razumem ja segmente i offsete(ulice i kuce)...
Mucilo me je zasto 0:0026h ali sad skapirah da se sve prekidne rutine nalaze na 0-tom segmentu..
A ova knjiga jel moze negde da se nadje za dzaba posto mi izbacuje samo neke kes sajtove(negde na torrentu ...)

[Ovu poruku je menjao glamoc dana 27.05.2007. u 11:57 GMT+1]
Kad covjeka napusti Sunce njegovog zavicaja ko ce mu posvijetliti na putu povratka
 
Odgovor na temu

[es] :: Asembler :: Generisanje dogadjaja sa tastature

[ Pregleda: 2851 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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