Autor Thema: Probleme beim assemblieren  (Gelesen 9547 mal)

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« am: 20. April 2005, 21:08 »
Hallo erstmal! Ich bin neu hier und hab gleich ein Problem (ziemlich unverschämt, ich weiss  :wink: ).

Ich habe mir NASM heruntergeladen und wollte folgenden Quellcode kompilieren:


DATEN           SEGMENT
Meldung         db "Hallo Welt!"
                     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


Wenn ich das jetzt kompilieren will bekomme ich folgenden Output:

Zitat

ASM02.ASM:1: error: parser: instruction expected
ASM02.ASM:4: error: symbol `DATEN' redefined
ASM02.ASM:4: error: parser: instruction expected
ASM02.ASM:6: error: parser: instruction expected
ASM02.ASM:7: error: parser: instruction expected
ASM02.ASM:12: error: comma or end of line expected
ASM02.ASM:17: error: symbol `CODE' redefined
ASM02.ASM:17: error: parser: instruction expected
ASM02.ASM:18: error: parser: instruction expected


Heisst das ich kann mein Assemblerbuch ("Assembler" von Rainer Backer) vergessen?
Übrigens Funktionieren auch die Tutorials von Adok nicht  :cry:

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 20. April 2005, 21:11 »
Die Bücher benutzen eher MASM/TASM, für NASM muss der Code etwas verändert werden.

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 20. April 2005, 21:20 »
Sollte ich mir dann eher MASM besorgen? Welche Assembler verwendet ihr denn? Irgendwie mag ich den MASM nur äusserst ungern benutzen  :?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 20. April 2005, 22:20 »
Was du hast ist das MASM-Format.
Schau mal ganz hinten, da steht bestimmt was zu den Verkuerzungen
drin, diese werden vom NASM unterstuetzt.
Du kannst statt MASM auch TASM benutzen :D

Svenska

edit: Hab glatt ueberlesen, dass du das gleiche Buch hast wie ich :lol: Ich
wusste doch, dass mir der Code bekannt vorkommt
Schau mal ganz hinten nach, da steht was zur vereinfachten Syntax drin,
die duerfte von NASM unterstuetzt werden.

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 20. April 2005, 22:35 »
Also in meinem Buch steht gar nix über vereinfachte Syntax  :cry:

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 21. April 2005, 10:54 »
Da ich an das Buch die nächsten Monate nicht rankomme, kann ich nur
aus dem Gedächtnis beschreiben... das muesste ganz hinten im Anhang
stehen, die vereinfachten Segmentanweisungen und so...

Sowas wie beispielsweise
mov ds,@data

Ich bin mir ziemlich sicher, dass soetwas da drin steht, weiss aber nicht
genau wo. Musst du mal suchen, ich glaube das war ganz hinten.

Svenska

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #6 am: 21. April 2005, 13:34 »
Also für OS-Dev würde ich klar NASM verwenden... Ist da am einfachsten, der Syntax, denk ich...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 21. April 2005, 13:59 »
Zitat von: joachim_neu
Also für OS-Dev würde ich klar NASM verwenden... Ist da am einfachsten, der Syntax, denk ich...


Und wird von den meisten anderen verwendet. Dann kann man mal leichter Code von anderen Leuten einbauen  :D

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 21. April 2005, 16:24 »
NASM oder auch FASM, aber von TASM und MASM würde ich eher abraten. (Hinzu kommt noch, dass man VIELLEICHT einmal einen Assembler portieren möchte. FASM und NASM sind OpenSource.

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 21. April 2005, 16:45 »
Und wie stehts mit YASM?

Ich erstell mal ne Liste: :D

NASM: +
FASM: +
TASM: -
MASM: -
YASM: ?

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 21. April 2005, 17:53 »
YASM ist NASM recoded.

Das ist echt schwierig, ich will keinen Microsoft/Borland Assembler benutzen aber wirklich KEIN Listing in einem meiner Tutorials funktioniert. Wie soll man denn da vernünftig Assembler lernen? Gibt es denn kein Tutorial, dass reinen Assembler (ohne irgendwelche selbstgeschriebenen Libraries) anhand der NASM/FASM Syntax lehrt? Auf Robsite ist nichts zu finden, da gibt es ein englischsprachiges nur leider verwendet der Autor schon ziemlich früh selbstgeschriebene Includefiles was natürlich blöd ist, wenn man wissen will wie z.B. Bildschirmausgabe mit Interrupts funktioniert. Die NASM Doku hat mir nicht viel weitergeholfen aber stellt denke ich mal auch nicht den Anspruch ein Tutorial zu sein. Ich bin echt am verzweifeln, als ich C und C++ gelernt habe war das alles viel einfacher. Aber vielleicht könnt ihr mir ja helfen: Ihr müsst ja auch irgendwie ASM gelernt haben (ich spreche jetzt zu den Leuten die mit NASM programmieren)? Wie habt ihr das gemacht (Bücher, Tutorials, etc.)?

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 21. April 2005, 18:04 »
Im Prinzip kann man auch MASM Syntax lernen. Und dann lässt man einfach alles mit Segmenten usw. weg.
Hab über Osdever.net noch das hier gefunden: http://www.drpaulcarter.com/pcasm/index.php?the_id=79
Keine Ahnung ob das gut ist, ist aber in English. Als Buch hab ich zum Beispiel Peter Nortons Assemblerbuch. Das ist eigentlich MASM und DOS, müsste aber mit der Taktik von oben verwendbar sein.
Ich selbst hab das ganze mit Tutorials, Büchern usw. im Ansatz gelernt (also kein Buch komplett gelêsen ^^). Und dann den Rest mit fertigen Code lesen gelernt.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 21. April 2005, 18:09 »
FASM ist hier vorbildlich: http://flatassembler.net/docs.php

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 21. April 2005, 18:18 »
Zitat
Hab über Osdever.net noch das hier gefunden: http://www.drpaulcarter.com/pcasm/index.php?the_id=79
Keine Ahnung ob das gut ist, ist aber in English.

Das ist leider das Tutorial bei dem der Autor seine eigenen selbstgeschriebenen C Bibliotheken benutzt.

Zitat
FASM ist hier vorbildlich: http://flatassembler.net/docs.php

Danke, das hilft mir schonmal etwas weiter. FASM bietet sogar eine kleine IDE was ich ganz praktisch finde (verwenden FASM und NASM die selbe Syntax?).

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 21. April 2005, 20:08 »
Nein. Fasm orientiert sich eher an TASM ist aber was eigenes...steht auch in der Doku.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 22. April 2005, 09:09 »
Zitat von: CryXor
Das ist echt schwierig, ich will keinen Microsoft/Borland
Assembler benutzen aber wirklich KEIN Listing in einem meiner Tutorials
funktioniert. [schnipp]

Doch, die Sachen funktionieren alle prima. Aber leider kannst du mit
der angegeben Taktik keine Segmente erstellen. Da musst du den Inhalt
wohl oder uebel raussaugen ...

Schau dir mal den einen oder anderen (Mini)Source an, dann weisst du
auch relativ schnell, wie es funktioniert. Fuer OS-Dev ist im
Anfangsstadium Segmentierung sowieso fuern Popo, weil du ja ein
Flat-Binary erzeugst (oder irre ich da?)

Svenska

edit: Ich hab wieder was gefunden, was dir vielleicht helfen könnte.
Hab es selbst zwar nicht gelesen, aber scheint nuetzlich zu sein (NASM
fuer TASM-Coder in Englisch).
http://home.datacomm.ch/glarema/objectsos/files/doku/dokus.zip
und darin die Datei nasm.txt. Viel Spaß & hoffe, es hilft!

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #16 am: 22. April 2005, 18:09 »
also ich hab  alle auf dem rechner. Zum lernen und Programme unter Win zu schreiben benutz ich MASM und TLILNK. Zum OS-Dev lohnt sich aber NASM. Der Umstieg ist nicht so schwierig.

mfg, jeb

CryXor

  • Beiträge: 6
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 24. April 2005, 16:43 »
Danke an alle die mir geholfen haben. Ich habe mich jetzt erstmal für FASM entschieden, behalte NASM aber noch weiter auf der Platte (man kann ja nie wissen  :wink: ).

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 24. April 2005, 17:44 »
Zitat von: CryXor

Zitat
FASM ist hier vorbildlich: http://flatassembler.net/docs.php

Danke, das hilft mir schonmal etwas weiter. FASM bietet sogar eine kleine IDE was ich ganz praktisch finde (verwenden FASM und NASM die selbe Syntax?).


Hab mir jetzt auch mal FASM gedownloadet und finde es sehr gut aber die IDE ist jetzt nicht wirklich optimal ;). Notepad2 ist da ein besserer Anfang.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 24. April 2005, 19:13 »
Ich benutzt auch die Linux-Version ohne IDE ;)

 

Einloggen