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

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

Beitragvon 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
Neokil
Newbie
 
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

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

Beitragvon 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)
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

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

Beitragvon 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.
Neokil
Newbie
 
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

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

Beitragvon 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
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

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

Beitragvon 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
Neokil
Newbie
 
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

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

Beitragvon 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
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

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

Beitragvon 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
Neokil
Newbie
 
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

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

Beitragvon 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
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

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

Beitragvon 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?
Neokil
Newbie
 
Beiträge: 8
Registriert: Samstag 16. Januar 2010, 22:20

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

Beitragvon 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
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

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

Beitragvon 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.
Benutzeravatar
Krüsty
Administrator
 
Beiträge: 96
Registriert: Donnerstag 8. Mai 2003, 21:25
Wohnort: Dresden, Deutschland

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

Beitragvon 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
Flip
Member
 
Beiträge: 12
Registriert: Montag 28. April 2008, 17:13
Wohnort: 35418 Buseck


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron