Interrupts in Konsole?
-
Hallo!
Mal 'ne Frage:
Wenn ich mit meinem VC++6 ein Win32 Konsolenprogramm schreibe und dort inline Assembler benutzen will, kann ich dann auch auf BIOS und DOS Interrupts zurückgreifen?
Ich habe schon gelesen, dass man keine Interrupts bei Windowsprogrammen benutzen darf. Bezieht sich das dann nur auf die DOS Interrupts, oder auch auf die BIOS Interrupts.Ich hoffe ich habe mich verständlich ausgedrückt.
Gruß
Maik[edit]Titel geaendert: IRQ steht fuer Interrupt ReQuest und bezieht sich auf das Signal, mit dem Perepheriegeraete im PC einen Interrupt anfordern.
Merke also: IRQ != Interrupt[/edit]
-
Moin, Moin...
In Win32-Programme dürfen/können weder BIOS- noch DOS-Interrupts benutzt werden. Die Interrupt-Funktionen arbeiten im Real-Mode, Windows läuft aber im Protected Mode. Für Aufgaben, wie z.B. Bildschirmausgabe, Dateibehandlung, etc, musst Du die Win-API-Funktionen verwenden.
Ciao...
-
Das heisst also, dass ich mit dem Inline Assembler keine Möglichkeit habe direkt z.B. Tastatureingaben zu lesen, sondern, dass ich das nur mit einer WIN API Funktion hinbekomme?
Auch auf die Gefahr hin, dass der Thread jetzt hier zu c-lastig wird, aber wie programmiert man denn zum Beispiel ein Funktion scanf, die doch eigentlich genau das von der Tastatur eingelesene an eine bestimmte Speicherstelle packt. Doch wohl nicht mit der WIN API, oder ?
-
Wie bereits gesagt wurde:
In Windows-Anwendungsprogrammen funktioniert Kommunikation mit der Hardware (in deinem Fall Tastatur) ueber Win-API.Zur weiteren Lektuere auch noch mal=>
C/C++ Forum :: FAQ - Assembler :: Unterschied: DOS / MS-DOS und Windows32-Konsole
(habe es gerade mal geupdated :p)
-
hm...
Solang's ned zu viel in die Tiefe geht:Einige DOS-Int's kann man auf der winXP-Konsole schon benutzen.
(z. B. Zeichen von Tastatur lesen, Zeichen ausgeben etc.)Probleme hat's bei mir aber mal gegeben, mit so Sachen wie "in den Bildschirmspeicher schreiben".
Das hat dann wirklich nur noch unter echtem DOS gefunzt :-/.Wie's allerdings mit BIOS-Int's ausschaut, hab ich noch ned ausprobiert.
Aber ich denk mal, dass es ned geht.
TEST & ERROR sollte hier allerdings Aufschluss gebenmfg
Martin
-
@Anonymous: Dir sei auch nochmal ein Blick in oben angegebenen FAQ-Beitrag empfohlen.
In Konsolenprogrammen loest ein Aufruf von int 21h oder int 16h eine Exception aus und Ende ist.