ASM-Anfänger hat Probleme mit MASM
-
Hi,
wie der Titel schon sagt bin ich ASM-Anfänger und bekomme es noch nicht einmal hin ein Programm mit dem MASM zum laufen zu bekommen, bei dem folgendem Code den ich aus einem Tutorial habe:
.MODEL Small .STACK 100h .DATA Nachricht DB 'Hello world!$' .CODE _Start: mov ax,@data mov ds,ax mov dx,OFFSET Nachricht mov ah,09h int 21h mov ah,4Ch int 21h END _Start
bekomme ich immer folgende Fehlermeldung:
Assembling: C:\masm32\asm\test.asm C:\masm32\asm\test.asm(11) : error A2006: undefined symbol : DGROUP
Ich hab schon in die FAQ geschaut und auch die Suchfunktion bemüht und das ganze auch schon mit alink (von nasm) versucht jedoch lieferte sich mir kein anderes ergebnis.
Danke für jede Hilfe.
Gruß Wolle
-
Moin, Moin...
Da Du die einfache Segmentkontrolle benutzt, musst Du auch die STARTUP- und EXIT-Makros verwenden, damit Daten- und Stacksegment korrekt initialisiert werden.
.MODEL Small .STACK 100h .DATA Nachricht DB 'Hello world!$' .CODE .startup mov dx,OFFSET Nachricht mov ah,09h int 21h .exit 0 END
Des Weiteren benötigst Du einen 16-Bit-Linker, d.h. einen Linker, der DOS-Exe erzeugen kann.
Hole Dir den Linker von hier: http://win32asm.cjb.net/
Klick auf Download und in der erscheinenden Liste gibt es einen Link mit Namen Link version 5.63.
Das Programm lnk563.exe ist ein selbstentpackendes Archiv. Nach der Ausführung stehen drei Dateien im Verzeichnis:
link.exe
cvpack.exe
readme.txtDen Linker link.exe umbenennen in link16.exe und in das Verzeichnis bin kopieren.
Dein Programm übersetzt Du so:
ml /c DeinProgramm.asm
link16 DeinProgramm.obj;Das Semikolon am Ende der Linker-Kommandozeile unterdrückt den Abfragemodus.
Ciao...
-
Ahhh ok, vielen dank!!!
Gruß Wolle.