Forum: PC-Programmierung MASM32 und komischer fehler


von Oliver D. (highspeed-oliver)


Lesenswert?

Hallo erstmal,

also, da man mir hier ständig sagt, dass man uCs nur vernünftig mit 
assembler programmieren kann, will ich damit nun beginnen. Für den 
Anfang wollte ich, wie in C, erstmal kleine windowsprogramme schreiben.

Also den qualtext aus meinem übungsbuch abgetippt, in den masm quickedit 
eingegeben und auf Build All geklickt.
Ich erhalte aber den Fehler:
<8>error A2004:symbol type conflict
<16>warning A4023:with /coff switch...

Irgendwie als Anfänger sehr blöde zu verstehen, da ich den quelltext 1:1 
abgekopiert habe und es nun funktionieren soll.
Gibts es da noch andere schöne Entwicklungsumgebungen oder was mache ich 
falsch...


Quelltext sieht so aus:
DATEN SEGMENT              ;- Beginn des Datensegments
Meldung db "Hello World"   ;- Die Zeichenkette "Hello World"
        db "$"             ;- Endzeichen der Zeichenkette
DATEN ENDS                 ;- Ende des Datensegment
CODE SEGMENT               ;- Beginn des Codesegements
ASSUME CS:CODE,DS:DATEN    ;- Dem Assembler die Segmente mitteilen
Anfang:                    ;- Label für den Anfang des Programmes
mov ax, DATEN              ;- das Daten...
mov ds, ax                 ;  ...segment laden
mov dx, offset Meldung     ;- den Text in das Datenregister laden
mov ah, 9                  ;- dem Betriebssystem mitteilen, was wir 
wollen
int 21h                    ;- diesen Befehl ausführen (hier Ausgabe des 
Texts)
mov ah, 4Ch                ;- dem Betriebssystem wieder mitteilen, was 
wir wollen
int 21h                    ;- diesen Befehl wieder ausführen
CODE ENDS                  ;- Ende des Codesegments
END Anfang                 ;- dem Assembler das Ende des Labels Anfang 
mitteilen

von Uhu U. (uhu)


Lesenswert?

Wie rufst du denn MASM auf? Welches Speichermodell ist eingestellt?

mov ax, DATEN              ;- das Daten...

Sollte es sich um 32 Bit flat handeln, dann geht das natürlich nicht, 
weil der Code nur in einem 16-Bit-Modell funktioniert...

von Bartli (Gast)


Lesenswert?

Naja, das ist eindeutig ein DOS-Programm was du da abgetippt hast, die 
Fehlermeldung deutet aber darauf hin dass du versuchst ne Win32 EXE zu 
assemblieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.