MASM Code assembliert nicht
-
hi
in meinem ASM Buch "Assembly Language for Intel Based Computers Fourth Edition" ist dieses hier das erste Beispiel:TITLE Add and Subtract (first.asm) ; this program adds and subtracts integers INCLUDE Irvine.inc .code main PROC mov eax, 10000h add eax, 40000h sub eax, 20000h call DumpRegs exit main ENDP END main
das kann ich aber leider nicht assemblieren, da es den END Punkt nicht findet, aber er ist doch da? Wie kann der Code aus dem Buch falsch sein? Ich benutze
den aktuellsten MASM und arbeite mit der Mitgeliferten IDE MASM32 Editor
-
hat sich erledigt
-
neues Problem: ich will in mein Programm einbaun, das die Console nicht sofort zugeht mit interrupt 16h:
TITLE Add and Subtract (first.asm) ; this program adds and subtracts integers INCLUDE Irvine32.inc includelib "irvine32.lib" ExitProcess PROTO,dwExitCode:DWORD DumpRegs PROTO .code main PROC mov eax, 10000h add eax, 40000h sub eax, 20000h call DumpRegs xor ax, ax ; ax = 0 int 16h ; -> Interrupt 0x16, Funktion 0 exit main ENDP END main
Leider crashed das programm jetzt. Woran liegt das?
-
*MagischeKristallkugelBeschwoer* ...
Ich sehe: Du versuchst ein Programm fuer Windows zu schreiben, in dem du diesen BIOS-Interrupt-Aufruf verwendest. Das BIOS ist aus Windows heraus im Grossen und Ganzen nicht mehr erreichbar. Der Versuch es aufzurufen (besonders ueber RealMode-Interrupts) crasht dein Programm.
In Windows-Programmen musst du mit der WinAPI arbeiten.
-
es ist ein console Projekt. Wie mache ich sowas unter windows?
-
Ich denke die einfachste Loesung waere, dein Programm in der Console aufzurufen, statt durch Doppelklick.
Sehr wahrscheinlich wird der Autor in seinem Buch spaeter noch auf den Umgang mit der WinAPI eingehen - ich schlage vor, du liest es dann dort nach.
-
ok danke, mache ich. Noch was anderes:
Warum läuft der Code hier:TITLE first program (firstasm.asm) INCLUDE Irvine32.inc .code main PROC mov eax, 10h main ENDP END main
ohne das INCLUDE Irvine32.inc nicht? Ich will mich ja nicht auf irgendwelche includedateien spezialisieren. wenn ich das INCLUDE weglasse, bekomme ich seltsame fehler. (MASM)
-
hab mittlerweile herausgefunden, dass ich noch .386 .model etc brauche