Assemblyben hogyan tudom lekérni az egér nullához képesti elmozdulását x, y tengelyen?
Itt megtalálsz minden funkciót:
De ha saját operációs rendszert írsz, akkor először az egérkezelő rutinokat kell megírnod, és persze az USB kezelőt, ha USB egeret is szeretnél használni a rendszeredben.
Itt a könyv linkje ahol erről olvastam, 45. oldal, ha a PDF fájl kiterjesztés nelkül jönne le, ahogyan nekem jött le, ird a '.pdf' fájlkiterjesztést a név után
Azért írtam, hogy "De ha saját operációs rendszert írsz, akkor először az egérkezelő rutinokat kell megírnod, és persze az USB kezelőt, ha USB egeret is szeretnél használni a rendszeredben."
A BIOSban nincs egérkezelés, de még USB sem azt neked kell megírnod.
A következőt olvastam:
AH=C2h
AL=szubfunkció száma
int 15h rendszerkezelés megszakítás
Helyes?
@scriba: Manapság már minden BIOS támogatja a "USB Legacy Support" funkciót, amit annyit tesz hogy ha egeret/billt érzékel akkor úgy tesz mintha PS/2 lenne, így azt közvetlenül el lehet érni BIOS megszakításokkal.
@Kérdző:
Először inicializálni kell az egeret, 3 bájra érdemes állítani, ezt majd később látni fogod miért:
mov bh, 3 ;csomag méret
mov ax, 0C205h ;inicializálás
int 15h
Beállíthatod a felbontást és egyéb dolgokat ha akarod:
mov bh, 3 ;8/mm
mov ax, 0C203h ;felbontás
int 15h
És végül meg kell adni hogy mit hívjon meg a megszakító ha az egér csinál valamit:
mov ax, cs ;CS-ben van a programszegmens címe
mov es, ax ;Berakjuk az ES-be
mov bx, OFFSET EgerKezelo ;Az EgerKezelő hívás címe
mov ax, 0C207h ;Driver hívás inicializálás
int 15h
Ha megvagyunk bekapcsoljuk az egeret:
mov bh, 1 ;Bekapcsolás
mov ax, 0C200h ;Az eger ki-/bekapcsolása
int 15h
Persze kihagytam számtalan ellenőrzést és biztonsági intézkedést amire figyelni kell, pl hogy az egér be van e dugva, felismerhető e, ki volt e a port eddig kapcsolva vagy be van alapértelmezetten stb. A BIOS-ban pedig ha van legacy usb mód akkor az legyen bekapcsolva különben USB drivert kell írnod ami már nem ilyen egyszerű. Minden egyéb beállítás és lehetőség is ott van az általad linkelt oldalon. Ha jól csináltad akkor akárhányszor megmozdul az egér az EgerKezelo procedúra meg lesz hívva, a stacken az információkkal 3 bájton, köztük az X és Y offsetekkel. Ezek szintén ott vannak az oldalon.
Ne felejtsd el a regisztereket lementeni a hívás elején a stackre majd visszatölteni őket a végén (ds, es meg amit használsz), lényegében ez is egy megszakítás.
Régen írtam már O/S és nem nagyon foglalkoztam az egérrel akkoriban, lehet hogy valamit kifelejtettem, de legalább látod hogy kell értelmezni az általad linkelt oldalt.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!