mode13
-
Und warum nicht, hab das nämlich aus 'nem Tut, das allerdings nicht auf visual c++ geschrieben ist, und wollt mir sowas in visual c++ basteln. Außerdem hab ich den "Punkt zeichnen (int 10, al 0Ch)" Thread gelesen, und da ist das doch so ähnlich. Welche Interrupts funktionieren denn in Windows-Programmen, bzw. wie könnte man denn sowas in Windows machen?
-
Eigentlich funktionieren in Windowsprogrammen gar keine Interrupts. Dafuer gibts die Win-API.
-
Und wenn ich in MASM/TASM ein Programm schreibe, ist das dann kein Windows-Programm? Und da funktionieren die Interrupts doch, oder? Hab den Quelltext übrigens aus der Konsolen-FAQ Thema: Zeichnen im DOS-Mode. Und dein Kollege SideWinder ist anscheinend der Meinung, das es doch geht, er hats ja editiert und in die FAQ gestellt.
-
Und wenn ich in MASM/TASM ein Programm schreibe, ist das dann kein Windows-Programm?
Das kommt darauf an, wie du es compilierst. Mit MASM/TASM kannst du auch win32-Anwendungen erstellen, wie mit VC++
Und da funktionieren die Interrupts doch, oder?
Nur, wenn du es als DOS-Programm compilierst.
Hab den Quelltext übrigens aus der Konsolen-FAQ Thema: Zeichnen im DOS-Mode.
Das ist genau der Knackpunkt: DOS-Mode und nicht win32.Ansonsten gibts an deinem code schliesslich auch keine Fehler.
-
Was du brauchst um die Interrupts in Windows zu nutzen, ist ein 16-bit Assembler. TASM ist solch einer und deshalb geht das. Bei Programmen die mit einem 16-bit Assembler assembliert worden sind, wird ein DOS emuliert. Visual C++ ist ein 32-bit Compiler und deshalb ist dies nicht möglich. Da hast du keine Chance!
-
Danke euch beiden, und warum kann mir Nobuo T nich sofort so eine Antwort geben?
-
Ich glaube mal dazu muss ich mich nun nicht auslassen, da man aus meinen Antworten den selben Schluss ziehen koennte.
Ich poste nunmal wirklich nur ungern Halbwahrheiten, wie unser unregistrierter Freund.
-
ok, wenn meine antwort nur die halbwahrheit war, was war dann an meiner aussage falsch?
-
ein 16-bit Assembler. TASM ist solch einer
nope, TASM ist nicht nur ein 16Bit-compiler. Damit lassen sich auch 32Bit Windows-Konsolenanwendungen, Windowsanwendungen und dlls erstellen
Was du brauchst um die Interrupts in Windows zu nutzen, ist ein 16-bit Assembler
Nochmal *tilt*. Das geht genausogut mit jedem anderen 16Bit DOS-Compiler zB. fuer C. Das urspruengliche Beispiel war schliesslich auch in C.
Bei Programmen die mit einem 16-bit Assembler assembliert worden sind, wird ein DOS emuliert.
Nur in Multitaskingsystemen, wie Windows. Ist auch nicht unbedingt selbstverstaendlich.[ Dieser Beitrag wurde am 17.06.2002 um 00:30 Uhr von Nobuo T editiert. ]
-
ich möcht mal jemanden sehen der versucht unter windows eine interruptgestuerte dos anwendung zu starten. ( ausnahme die win9x reihe. aber die wird von microsoft ja nicht mehr gewartet ) wird sicherlicht mit ner bösen fehlermeldung enden.
das hängt damit zusammen, das windows ein mulitprozessing betribsystem ist ( man kann sich drüber streiten) und entsprechende sicherheitskriterien eingebaut hat die sowas verhindern sollen. Hardware zugriffe sind in der Regel nur dem Betriebsystem / und treibern vorbehalten. dementsprechend werden auch solche vergehen mit der roten karte geandet. das gleiche gilt für direckte speicherzugriffe. und das aufrufen entsprechender interrupte.
gruss termite