mikrocontroller.net

Forum: PC-Programmierung MASM32 und komischer fehler


Autor: Oliver D. (highspeed-oliver)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.