32/64 bit Assembler unter Windows
-
Hi, kann man denn unter Windows ohne Masm 32 bit oder 64 bit Assembler schreiben? Ich habe ein Buch über 16 Bit Assembler gelesen und darin werden immer Interrupts aufgerufen, geht das auch noch unter 32/64 bit für Windows? Wenn ihr ein gutes Tutorial oder Buch kennt, bitte Link schicken.
-
ehauser schrieb:
Ich habe ein Buch über 16 Bit Assembler gelesen und darin werden immer Interrupts aufgerufen, geht das auch noch unter 32/64 bit für Windows?
Windows x64: nein, 16Bit Programme können nur noch mittels eines Emulator laufen (z.B. DOSBox)
Windows x86-32: ja, aber beschränkt (auch hier empfiehlt sich ein Emulator)Verschwend deine Zeit nicht mit 16Bit/DOS Code und werf das Buch weg.
-
Unter 32 Bit Windows kannst du das kleine Assembler IDE "Debug" nutzen. Besser ist aber auch, die Masm(uralt+neu) Syntax zu lernen, die kann man immer mal gebrauchen.
Durch den Virtual Mode kannst du 16 Bit Interrupts zusammen mit den meisten Pentium-Erweiterungen nutzen, (MMX, SSE, 32 Bit Register-Erweiterungen, Debug Register usw.) zur Verfügung, also schon mal eine ganze Menge zu Herumspielen und Lernen.
Im 64 Bit Modus wird der Virtual Mode/16 Bit nicht unterstützt, sondern nur eine Kompatibilität zu 32 Bit Programmen. Man könnte auf Interrupts zugreifen, aber nur sinnvoll unter sehr schwierigen Bedingungen, u.a. auch auf Kosten der (Windows-) Betriebsystemstabilität.
Ein weiteres Problem sind Treiber und undokumentierte Hardware. Die Probleme, die Linuxer haben, um vernünftige alternative (aktuell performante) GUI-Treiber hinzubekommen, sprechen Bände.
(Dies aber nur nebenbei)Was man also macht, ist statt des Interrupts Betriebsystemfunktionen aufzurufen. Hierzu braucht man aber eine Betriebsystem-Api-Dokumentation - und man muß auch verstehen, wie die Übergabe von Parametern von z.B. C nach Assembler abläuft. Wie das geht, kann man sich aber ruhig auch in einem Dos-Asm Buch anschauen, da gibt es keinen großen Unterschied zu 16 oder 32 oder 64 Bit, aber ein Blick in die Compilerdokumentation ist in der Regel auch nötig und hilfreich.
Es ist auch recht nützlich, zu verstehen, was eine Interrupt-Tabelle ist, wie man diese überschreibt usw. Das kann man alles in einem Dos-Buch lernen und vieles mehr. Auch einige ältere C-Bücher orientieren sich noch an einer Dos-Api, das tut dem C-lernen nicht wirklich weh, weil eben auch viele fundamentale Hardwaregrundlagen, oder allgemeine Programmiergrundlagen mitvermittelt werden und man sowieso erstmal sinnvollerweise mit Konsoleprogrammen und Algorithmen beginnen kann, bevor man sich sinnvoll an Gui-Bibliotheksfunktionen heranwagt. Wobei umgekehrt lineare Arithmetik zum Thema Gui sich vielleicht leichter lernt, wenn man gleich kleinerer grafische Linienverschiebegrundlagen, Spritprogrammierung usw. lernt.
(z.B. http://www.es.cs.uni-frankfurt.de/uploads/media/versuch_6.pdf
...wenn man keine FPGA Platine hat, dann geht (nicht nur) zur Not auch die nette kleine Javaassembler-Dame Jasmin http://www.lrr.in.tum.de/~jasmin/ ...macht auch Spaß)Zu den besseren Programmiertutorials gehört http://out7.hex-rays.com/files/idafree50.exe
und http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=2
-
Ok, danke für die Informationen und Links. Ich hätte noch eine Frage: Kann man mit Nasm auch für 32bit unter Windows programmieren?