assembler - was brauch ich?



  • Hallo.
    Ich möchte mich mit Assembler beschäftigen.
    Ich brauche doch nur einen Editor + Compiler richtig?
    Aber ich höre ständig was von verschiedenen Assemblerarten (z.B. x86)
    Womit soll ich anfangen? Ist die Synthax trotzdem bei allen gleich?

    Ps.
    Habe mir als Ziel gesetzt, dieses Jahr noch einen Taschenrechner in Assembler programmieren zu können. Wenn ich das hinbekomme, bin ich doch mit den Basic schon recht gut vertraut richtig ?

    Gibt es ein gutes Tutorial + Beispiele ?



  • Achja ich habe mich bisher nur mit Hochsprachen (c++, php etc) beschäftigt.
    Wenn ich ein wenig mit Assembler arbeite und verstehe, wird es mir doch sicherlich leichter fallen irgendwelche Algoryrhmwn zu entwickeln oder?



  • comey schrieb:

    Ich brauche doch nur einen Editor + Compiler richtig?

    Der Assemblercode wird nicht compiliert sondern assembliert. Daher nennt sich das was du brauchst einen Assembler. Ansonsten hast du recht.

    comey schrieb:

    Aber ich höre ständig was von verschiedenen Assemblerarten (z.B. x86)
    Womit soll ich anfangen? Ist die Synthax trotzdem bei allen gleich?

    Es gibt keinen standard Assembler, daher gibt es kaum zwei Assembler die den gleichen Code schlucken. Wobei das größte Problem dabei die Assemblerdirektiven sind, mit denen man festlegt an welche Stelle im Speicher das Programm geladen werden soll, welche Konstanten im Programm enthalten sind etc. Wichtig ist aber vor allem, dass du dich auf eine Architektur festlegst. Assemblercode verschiedener Architekturen hat nicht nur eine andere Syntax, sondern auch andere Befehle und oft auch eine andere Vorgehensweise. In so ziemlich jeden handelsüblichen PC sitzt eine x86 Architektur, daher bietet sich das an. Allerdings gibt es bei x86 neben den immer unterschiedlichen Direktiven auch zwei Syntaxarten: Intel und AT&T. Die unterscheiden sich z.B. in der Reihenfolge von Quelle/Ziel oder in einem % vor Konstanten. Da beides in der Praxis eingesetzt wird, kann man da nicht das eine oder das andere empfehlen. Es ist einfach Geschmacksache.

    comey schrieb:

    Wenn ich ein wenig mit Assembler arbeite und verstehe, wird es mir doch sicherlich leichter fallen irgendwelche Algoryrhmwn zu entwickeln oder?

    Beim Finden von Algorithmen wird dir Assembler wohl kaum helfen. Das macht man in der Regel auch nicht im Code, sondern mit Stift und Papier. Wo es dir helfen könnte wäre zu verstehen wie das Programm das du in einer Hochsprache geschrieben hast dann später überhaupt ausgeführt wird. Da kann man sich manchmal wundern wie viel, oder manchmal auch wie wenig, Maschinencode da aus einer Zeile Hochsprachencode entsteht.



  • ok danke und wo bekomm ich ein guten x86 assembler her? am besten einer der gleich automatisch linkt und mir die .obj .exe erzeugt.

    also würde am liebsten einfach mein assemblercode schreiben und es anschließend einfach nur noch schnell assembeliren lassen



  • Ein Assembler ist kein Linker. Ich kenne auch keinen Assembler mit eingebautem Linker (waere auch etwas sinnbefreit). Entsprechend spuckt dir ein Assembler entweder flat binaries (z.B. DOS .com-Programmme) oder irgendwelche Objekt-Dateien aus. Um eine .exe-Datei fuer Windows zu erzeugen, brauchst du also noch einen passenden Linker.

    Wie auch immer - wenn dein Ziel ist, allgemein etwas Routine in Assembler zu bekommen, waere mein Vorschlag, du suchst dir zuerst ein gutes Buch oder Tutorial zu Assembler und schaust danach, ob/wie du das umsetzen kannst.

    Meiner Erfahrung nach gibt es nach wie vor die meisten brauchbaren Anfaengertutorials fuer PC/DOS mit TASM (nicht kostenlos und wird nicht mehr offiziell vertrieben - da ist ein wenig Kreativitaet bei der Beschaffung gefragt) oder MASM.

    Empfehlungen fuer Buecher und Tutorials stehen in den FAQ. Dort findest du auch eine kleine Liste kostenloser Assembler fuer PC.
    Offiziell nicht mehr verfuegbar, aber IMHO schoen anfaengerfreundlich und auf Deutsch ist das Tutorial von Thomas Peschko fuer TASM.



  • Algoryrhmwn

    👍



  • Ein Assembler ist kein Linker. Ich kenne auch keinen Assembler mit eingebautem Linker (waere auch etwas sinnbefreit). Entsprechend spuckt dir ein Assembler entweder flat binaries (z.B. DOS .com-Programmme) oder irgendwelche Objekt-Dateien aus. Um eine .exe-Datei fuer Windows zu erzeugen, brauchst du also noch einen passenden Linker.

    Wo bekomme ich denn den Assembler + Link her? Gibts dafür ne offizielle Seite? Wollte gerne den x86 Assembler benutzen.

    waere mein Vorschlag, du suchst dir zuerst ein gutes Buch oder Tutorial zu Assembler und schaust danach, ob/wie du das umsetzen kannst.

    Danke aber zum Ausprobieren brauch ich schließlich auch ein Assembler + Linker



  • Den x86-Assembler gibt es nicht. Schau in die FAQ, da ist gleich eine ganze Reihe von den Dingern verlinkt (z.T. auch die "offiziellen" Seiten). Als linker kannst du im Prinzip nehmen, was dir gefaellt. Ich finde zB. den GoLink von GoASM (bzw. den GoTools - die "offizielle" Homepage ist leider schon ein Weilchen down) ganz nett.

    Tutorials oder Buecher, vor allem die fuer Anfaenger, arbeiten idR. mit einer ganz bestimmten Toolchain (Also Assembler, Linker, usw.). Wenn du also ein Buch oder Tutorial hast, mit dem du meinst, gut auszukommen, wuerde dir das die Auswahl eines Assemblers praktisch schon mal ersparen: Um nicht laufend Probleme zu bekommen, besorgst du dir am besten die im Buch/Tutorial verwendeten Tools.



  • comey schrieb:

    Hallo.
    Ich möchte mich mit Assembler beschäftigen.
    Ich brauche doch nur einen Editor + Compiler richtig?

    Du brauchst noch einen Debugger, und ein Disassembler wäre auch nicht schlecht, oder ein Hexeditor.
    Leider schreibst du nicht, auf welchem System du arbeiten willst.

    comey schrieb:

    Ps.
    Habe mir als Ziel gesetzt, dieses Jahr noch einen Taschenrechner in Assembler programmieren zu können. Wenn ich das hinbekomme, bin ich doch mit den Basic schon recht gut vertraut richtig ?

    Ich glaube schon.


Log in to reply