Assemblersprache

Hallo erstmal.

Ich würde gerne eine Assemblersprache lernen.
Kann mir jemand sagen, welche sich da am besten eignen würde, und was ich alles dazu brauche? (Komphiler etc.)


Danke schonmal.
 
Als allererstes würde ich dir ein Tutorial empfehlen, dass du kostenfrei im Internet ansehen und lesen kannst. Wenn du das alles halbwegs verstehst, kannst du dir ein Buch besorgen, ich empfehle da das Buch "Assembler - Grundlagen der Programmierung" von Joachim Rohde und Marcus Roming.

PS: Bei der Assemblersprache wird ein Assembler benötigt, und ein Linker und kein "Komphiler" ;)
PPS: Es heißt übrigens "Compiler" :rolleyes:
 
Ja, die Sprache heißt Assembly.
Ein Assembler ist nur das Programm, dass den Assembly-code in Maschienencode umwandelt.

Mag jetzt komisch klingen, aber ich habe Assembly unter MenuetOS gelernt ( http://www.menuetos.net/ )
MenuetOS verwendet den fasm (gibts auch für windows/linux)
Vorteil: die API ist speziell für die ASM-Verwendung entwickelt worden. Somit kann man extrem schnell und einfach ein kleines tool mit GUI entwickeln.
Nachteil: Man benötigt ein Diskettenlaufwerk.

Um es auf den Punkt zu bringen:
Als Assembler empfehle ich FASM (unter win, gibts auch eine kleine IDE dabei)

Was du brauchst:
Erstmal benötigst du nur den Assembler, und einen Texteditor (notfalls Notepad)
 
Die Assemblersprachen für PC (MASM/TASM/NASM/FASM etc) unterscheiden sich nicht sonderlich, es gibt jedoch Unterschiede zwischen Assembler für x86 Prozessoren und Assembler für z.B. PICs. Es kommt vor allem auf den Prozessor an und welchen Befehlssatz / Register er besitzt. Falls du unter Windows programmieren willst, ist MASM keine schlechte Wahl, da es weit verbreitet ist.
 
Es kommt auch darauf an, was du mit Assembly machen willst. Wenn du komplexere Win32 Programe mit graphischer Benutzeroberfläche schreiben willst, würde ich dir MASM empfehlen, da man mit "invoke" Funktionen direkt mit Parametern aufrufen kann und sie nicht erst auf denStack speichern muss und dann zur Funktion zu springen. Dadurch wird der Code übersichtlicher. Wenn es dir aber darum geht, wie ein Rechner im Detail funktioniert, würde ich dir NASM empfehlen. Bei NASM musst du noch jede API Funktion einzel einbinden etc.
P.S. Falls du NASM verwenden willst um bspw. Win32 Programme zu schreiben, brauchst du noch einen Linker (z.B. ALINK). Bei MASM ist der bereits integriert (Bei den neueren Versionen)
 
Invoke in MASM ist nichts weiter als ein Macro, welches dann durch push und call ersetzt wird. Push und call funktionieren aber auch. Wenn du willst kannst du es bei MASM auch lassen die kernel32.inc / user32.inc etc. einzubinden. Dann musst du auch alles, was du benutzen willst, per Hand einbinden.
 
abseits von allen tips hier empfehle ich, sich ASM für die MIPS-Architektur anzuschaun, wenn man sich mal in ASM einarbeiten möchte - befehlssatz und architektur sind überschaubar, imho sehr gut für den einstieg. btw, MIPS-CPUs werden oft in embedded devices verbaut (handy, router usw.)

mit SPIM gibts dazu einen open-source-simulator, praktisch unverzichbar beim erlernen.

zudem gibt es ein sehr gutes MIPS-Tutorial, das alles wichtige abdeckt.
 
Zurück
Oben