Kezdőoldal » Számítástechnika » Programozás » Assemblyben hogyan tudom...

Assemblyben hogyan tudom lekérni az egér nullához képesti elmozdulását x, y tengelyen?

Figyelt kérdés
Operációs rendszert szeretnék programozni. A grafikai felület már kész, ezek után az egeret rá szeretném programozni a rendszeremre. Azt tudom hogy BIOS int 0x15 (15h) rendszerkezelő megszakítást kell alkalmazni az egérhez, és 0x06 (AL) értéket kell megadni, arra lennék kíváncsi, hogy milyen más regiszterekben kell még megadnom értékeket, és maga a megszakítás után (15h, amit már leírtam) mely regiszterekbe térnek vissza az elmozdulások értékei, azt is tudom hogy meg lehet adni azt, hogy hány egységet mozduljon el milliméterenként, valamint azt is hogy milyen időközönként adjon információt, ez valamiféle beépített driver, amit be lehet tölteni bufferbe az általunk kiválasztott címre (ES:bx), csak azt nem tudom hogy pontosan hogyan is működik a dolog mert még gyakorlatban nem alkalmaztam, csak olvastam róla csak nem volt világos, valaki el tudná magyarázni?
2014. dec. 8. 19:48
 1/9 anonim ***** válasza:

Itt megtalálsz minden funkciót:

[link]


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.

2014. dec. 8. 20:05
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
Úgy tudom, hogy ez DOS interrupt, márpedig én BIOS szolgáltatást szeretnék igénybevenni
2014. dec. 8. 20:14
 3/9 A kérdező kommentje:

[link]



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

2014. dec. 8. 20:18
 4/9 anonim ***** válasza:

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.

2014. dec. 8. 22:27
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

A következőt olvastam:


AH=C2h

AL=szubfunkció száma

int 15h rendszerkezelés megszakítás


Helyes?

2014. dec. 8. 22:38
 6/9 A kérdező kommentje:

[link]


itt egy erről szóló oldal linkje, szűrjetek ki valamit belőle

2014. dec. 8. 22:46
 7/9 anonim ***** válasza:
100%

@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.

2014. dec. 9. 00:24
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Köszönöm a választ :)
2014. dec. 9. 01:04
 9/9 anonim ***** válasza:
Van esetleg egy link, ahol nyomon lehet követni a fejlesztést? Inkompetens vagyok a témában, csak kíváncsi lennék, hogy hogy megy ez.
2014. dec. 9. 14:08
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!