Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Antworten
Neokil
Newbie
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Neokil » Samstag 16. Januar 2010, 22:28

Hallo,
ich habe mir vorgenommen ein bischen Assembler zu lernen und habe mir ein Buch dazu gekauft ("Assembler - Maschienennahes Programmieren von Anfang an") Dort steht, dass wenn man mit Microsoft Visual Studio arbeitet sollte man am besten MASM nehmen. Das habe ich mir dann hier heruntergeladen und installiert. Wenn ich jetzt das erste Code-Beispiel eingebe, dass so aussieht (Es sind im Buch noch Komentare dabei):

Code: Alles auswählen

DATEN   SEGMENT
Meldung db "Assembler ist gar nicht so schwer."
        db "$"

DATEN   ENDS

CODE    SEGMENT
        ASSUME CS:CODE,DS:DATEN

Anfang: mov ax,DATEN
        mov ds,ax
        mov dx,offset Meldung
        mov ah,9
        int 21h
        mov ah,4Ch
        int 21h

CODE    ENDS
        END Anfang
kommt wenn ich auf "Project"->"Assemble ASM file" klicke ein Fenster mit folgendem Inhalt

Code: Alles auswählen

 Assembling: C:\Users\Neokil\Documents\Assembler-Buch\asm1.asm
C:\Users\Neokil\Documents\Assembler-Buch\asm1.asm(10) : error A2004: symbol type conflict
C:\Users\Neokil\Documents\Assembler-Buch\asm1.asm(19) : warning A4023: with /coff switch, leading underscore required for start address : Anfang
 Volume in drive C has no label.
 Volume Serial Number is 303A-F9F7
...
Da ich ganz neu angefangen habe, habe ich keine Ahnung was da los ist. Das ist das erste Beispiel und es funktioniert nicht?!

Kann mir jemand helfen?

MFG
Neokil

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von crack » Sonntag 17. Januar 2010, 02:45

Ja, das ist relativ einfach:

Du willst ja das Segmentregister DS auf den Anfang des Datensegments setzen, jedoch:

mov ax, DATEN

würde versuchen AX mit einer Speichervariablen 'DATEN' zu laden, und diese gibt es nicht...

Die korrekte Syntax sollte:

mov ax, @DATEN

sein... 8)

Neokil
Newbie
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Neokil » Sonntag 17. Januar 2010, 10:31

also ich habe jetzt genau diese Zeile geändert und jetzt kommt

Code: Alles auswählen

C:\Users\Neokil\Documents\Assembler-Buch\asm1.asm(10) : error A2006: undefined symbol : @DATEN
anstatt von dem Fehler mit symbol type conflict.

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von crack » Sonntag 17. Januar 2010, 16:13

Ich habe den Code mal als beispiel.asm abgespeichert und die Zeile nochmal geändert in:

Code: Alles auswählen

mov ax, seg DATEN             ; andere Syntax für Segmentzuweisungen 
und dann von der Kommandozeile (Eingabeaufforderung) mit

Code: Alles auswählen

ml /c beispiel.asm 
compiliert (das /c bewirkt das nicht unmittelbar nach dem compilieren gelinkt wird), denn es muss ja ohnehin mit dem 16 Bit Linker geschehen. die Hinweise auf den 16 Bit Linker findest Du hier im Forum.
mit freundlichen grüssen,
with best regards,

crack

Neokil
Newbie
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Neokil » Montag 18. Januar 2010, 17:51

also ich habe die Zeile geändert. wenn ich jetzt die CMD öffne, in das VErzeichnis gehe und "ml /c beispiel.asm" eingebe, heißt es:

Code: Alles auswählen

'ml' is not recognized as an internal or external commend, operable program or batch file.
Aber sollte ml nicht bei der Installation in System32-Verzeichnis kopiert worden sein? Ich habe den Installer hier aus dem Forum genommen und dort sollte das doch eigentlich funktionieren oder?

MFG
Neokil

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von crack » Montag 18. Januar 2010, 21:49

axo, theoretisch sollte der Windows Suchpfad vom Installer angepasst werden, das ml.exe im Verzeichniss /masm32/bin gefunden wird, du könntest den Pfad von Hand anpassen
/Systemsteuerung/erweitert/Systemvariablen
oder ml.exe in /windows/system32 kopieren.
mit freundlichen grüssen,
with best regards,

crack

Neokil
Newbie
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Neokil » Montag 18. Januar 2010, 22:43

könntest du das genauer erklären mit dem systemvariablen?
Ich habe das ganze jetzt trotzdem assembliert und mit dem link16-compiled. Wenn ich jetzt die exe starten will, kommt:
Bild

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von crack » Dienstag 19. Januar 2010, 21:15

Also die Systemvariablen / Umgebungsvariablen enthalten unter anderem den Suchpfad indem Windows (auch DOS) nach den Befehlen/Anwendungen sucht.

Diese Umgebungsvariable findest Du indem Du dem Menu:
Start - Einstellungen - Systemsteuerung - (klassische Ansicht) - System - Erweitert - Umgebungsvariablen
folgst. in der zweiten Box mit dem Titel 'Systemvariablen' findest Du die Path (Suchpfad) Variable, die sieht bei meinem System z.B. so aus:

Code: Alles auswählen

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Programme\Samsung\Samsung PC Studio 3\;c:\a86;c:\masm32\bin
Um da neue Verzeichnisse (also in dem Fall das MASM32 Verzeichniss) hinzuzufügen, hängst Du am Ende der Variablen das neue Verzeichniss mit einem ; davor an:

Code: Alles auswählen

;c:\masm32\bin
Danach kann aus jedem anderen Verzeichniss heraus der Befehl ML.EXE oder jede andere Anwendung im MASM32/BIN Verzeichniss gefunden werden.
Mittlerweile kann ich mir auch vorstellen was bei deiner Installation schief gegangen sein könnte, am Ende der Installation startet MASM32 ein Skript das die Variablen ergänzt, und dieses könnte vom AV / Systemsicherheit geblockt worden sein.

BTW.: die Fehlermeldung oben besagt das auf deinem OS so keine 16Bit Programme laufen, schau mal hier im Forum 'MASM32 Package' in den ersten Thread, da solltest Du evtl. eine Lösung finden ... 8)
mit freundlichen grüssen,
with best regards,

crack

Neokil
Newbie
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Neokil » Dienstag 19. Januar 2010, 22:06

also ich habe mir den Thread angeschaut, aber das prblem ist, dass wenn ich die Datei (erster Post) starten will (ist eine exe und kein Archiv?) kommt folgende Fehlermeldung: Bild
Kann das sein, dass Windows 7 x64 nicht erkannt wird?

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von crack » Donnerstag 21. Januar 2010, 23:48

Offensichtlich ist es so das 16Bit Software von Win 7 nun garnicht mehr unterstützt wird.
Lies mal weiter unten im Thread, ich habe dort auf eine Dos Emulation (DosBox) hingewiesen, die auf Vista läuft, damit hättest Du auch gute Chancen das diese unter 7 auch läuft, innerhalb dieser Emulation sollten dann alle Programme einwandfrei laufen.
mit freundlichen grüssen,
with best regards,

crack

Benutzeravatar
Krüsty
Administrator
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland
Kontaktdaten:

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Krüsty » Freitag 26. Februar 2010, 12:00

Das ist kein alleiniges Problem von Windows 7 X64. Es gibt ein generelles Problem mit X64 Betriebssystemen.
Selbst Windows XP X64 bringt bei 16-Bit-Anwendungen die Fehlermeldung
Die Datei %dateiname% ist gültig, aber für einen anderen Computertyp bestimmt.
.
Auch unter Vista X64 ist das Problem bekannt.
Also bleibt nix anderes übrig als auf eine 32-Bit Version des Betriebssystems zu wechseln oder Emulatoren (wie z.B. http://www.dosbox.com/ ) zu verwenden.

Bei mir unter Windows 7 32-Bit Version laufen alle 16-Bit Anwendungen bis jetzt jedenfalls ohne Probleme!

Grüße!
Steve
a member of CodingCrew.de
Air conditioned computer. Please keep WINDOWS closed.

Flip
Member
Beiträge: 12
Registriert: Montag 28. April 2008, 17:13
Wohnort: 35418 Buseck

Re: Assembler-Buch-Beispiel gibt Fehler: symbol type conflict...

Beitrag von Flip » Samstag 6. März 2010, 19:36

Hallo
Ist das Problem gelöst. Wenn NEIN dann melde Dich noch einmal
Karl-Heinz Nicolai
Krebenweg 1
35418Buseck
E-Mail: ingenicolai@gmx.de

Antworten