Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: CryXor 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:
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:
-
Die Bücher benutzen eher MASM/TASM, für NASM muss der Code etwas verändert werden.
-
Sollte ich mir dann eher MASM besorgen? Welche Assembler verwendet ihr denn? Irgendwie mag ich den MASM nur äusserst ungern benutzen :?
-
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.
-
Also in meinem Buch steht gar nix über vereinfachte Syntax :cry:
-
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
-
Also für OS-Dev würde ich klar NASM verwenden... Ist da am einfachsten, der Syntax, denk ich...
-
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
-
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.
-
Und wie stehts mit YASM?
Ich erstell mal ne Liste: :D
NASM: +
FASM: +
TASM: -
MASM: -
YASM: ?
-
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.)?
-
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.
-
FASM ist hier vorbildlich: http://flatassembler.net/docs.php
-
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.
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?).
-
Nein. Fasm orientiert sich eher an TASM ist aber was eigenes...steht auch in der Doku.
-
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!
-
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
-
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: ).
-
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.
-
Ich benutzt auch die Linux-Version ohne IDE ;)