Ich will Assembler lernen



  • Hi leute
    ich möchte beginnen mit Assambler zu programmieren! ich hab bis jetzt ein wenig c / c++ programmiert. ich hab aber noch einige fragen! Assembler programme sind glaub ich zuminderst sehr prozessor abhängig läuft dann ein programm das auf einem pentium III geschrieben wurde auf einem Athlon xp? Und woher erfahre ich welche funktionen ich für welchen prozessor verwenden kann? Wie wird das programm erstellt nachdem ich den sourcecode geschrieben habe? gibt da auch einen kompiler wie in c /c++?
    Ich hoffe meine fragen sind verständlich!!
    Albert



  • albertk13 schrieb:

    Assembler programme sind glaub ich zuminderst sehr prozessor abhängig läuft dann ein programm das auf einem pentium III geschrieben wurde auf einem Athlon xp?

    Ja. Probleme bekommst du nur, wenn du z. B. SSE3(SSE2, ...) Befehle verwendest auf einem Prozessor der dies nicht unterstuetzt. Aber das wird am Anfang eh nicht der Fall sein. Und alle "normalen" CPUs (Pentiums und Athlons aller Art) unterstuetzen den x86-Befehlssatz.

    Und woher erfahre ich welche funktionen ich für welchen prozessor verwenden kann?

    Internet. z. B. auf der Seite der CPU-Hersteller.

    Wie wird das programm erstellt nachdem ich den sourcecode geschrieben habe? gibt da auch einen kompiler wie in c /c++?

    Ja. Der "Compiler" heisst in dem Fall "Assembler" (also genau so wie die Sprache selbst). Bekannte Assembler fuer x86-Prozessoren sind z. B. NASM, GAS oder TASM. IIRC sind die auch alle gratis im Internet zu bekommen.



  • Danke
    ich hab jetzt nach Assemblern gesucht und eigendlich nur für TASM einen download gefunden! TASM ist meiner meinung aber etwas alt oder werden alle Assembler in einer konsole geöffnet? Kennt jmd links zum download eines anderen assemblers?





  • Muss ich FASM installieren ? Da ist ja so eine Datei dabei die heist FASMW ich bin davon ausgegangen das das der assembler ist aber wenn ich da einen code (aus examples) eingebe bringt er mir einen error: file not found
    was mach ich falsch?



  • albertk13 schrieb:

    TASM ist meiner meinung aber etwas alt oder werden alle Assembler in einer konsole geöffnet?

    lol, jeder compiler und assembler wird im grunde von der konsole aus bedient 🙄

    albertk13 schrieb:

    Maber wenn ich da einen code (aus examples) eingebe bringt er mir einen error: file not found

    rofl,omg autsch... der erwartet natürlich einen dateinamen und nicht den sourcecode selber

    da du anscheinend noch nichtmal beherrschst mit deinem heimcomputer umzugehen solltest du vielleicht nicht direkt mit assembler anfangen 👎



  • Mit was könnt ich dan anfangen?



  • python oder ruby z.b.



  • Irgendwie... scheint dir da tatasechlich ein wenig der Ueberblick zu fehlen.
    Die tollen bunten Fenster, wo du deinen C++-Code reingeschrieben hast, nennt man IDE. Das hat nichts mit den dahinter arbeitenden Compilern und linkern zu tun, sondern ist ein eigenstaendiges Programm. Der Compiler (oder in diesem Fall Assembler) uebersetzt nur die Quellcodes (praktischerweise aus Dateien heraus) in Maschinensprache. Dazu braucht es logischerweise keine Fenster, da tut's auch die Konsole.

    Die .asm-Dateien (Assembler Quellcode Dateien) kannst du mit deinem Lieblingseditor schreiben (auch mit deiner C++-IDE oder word wenn du lustig bist).
    Assembliert wird dann entweder ueber die Konsole oder eine DOS Stapelverarbeitungsdatei (.bat/.cmd-Scripte).
    Spezielle IDEs fuer Assembler gibt es auch... Mal im Forum suchen.



  • Genau: bau dir erstmal mit C++ und der GUI-LIB deiner Wahl eine IDE für Assembler und fange dann damit an, Assembler zu lernen. 😉



  • albertk13 schrieb:

    Muss ich FASM installieren ? Da ist ja so eine Datei dabei die heist FASMW ich bin davon ausgegangen das das der assembler ist aber wenn ich da einen code (aus examples) eingebe bringt er mir einen error: file not found
    was mach ich falsch?

    Er findet wahrscheinlich die win32a.inc nicht. Du musst den kompletten Pfad mit angeben. Wenn du ein Beispiel in den Editor ziehst dann ändere am Anfang das

    include 'win32a.inc'
    

    in

    include '..\..\include\win32a.inc'
    

    Dann müsste es funktionieren.



  • ich habs hinbekommen ich nehm jetzt NASM oder so! Des geht eig ziemlich einfach über die konsole... ich hab mir ein tutorial ausgedruckt in dem ich gerade bei den registern bin! Bekommt jedes programm eigene register? Wenn nein wie geht es dann das kein programm ein register (in das von einem anderen programm geschrieben wurde) überschreibt?



  • albertk13 schrieb:

    ich habs hinbekommen ich nehm jetzt NASM oder so! Des geht eig ziemlich einfach über die konsole... ich hab mir ein tutorial ausgedruckt in dem ich gerade bei den registern bin! Bekommt jedes programm eigene register? Wenn nein wie geht es dann das kein programm ein register (in das von einem anderen programm geschrieben wurde) überschreibt?

    Die CPU hat immer nur einen Registersatz. Damit du trotzdem nicht in den Sachen anderer Programme rumfuchteln kannst managed das Betriebssystem das so das es für dich aussieht als hättest du die CPU für dich alleine :). Guck mal unter Protectet Mode und Multitasking/Threading. Braucht dich aber noch nicht zu interessieren weil du noch kein OS proggen willst 😉

    mfg tobZel



  • Super Danke!!!



  • ich will mir jetzt ein Buch über assembler kaufen ich hab auch schon eins gefunden:
    http://www.amazon.de/Assembler-m-CD-ROM-Oliver-M%C3%BCller/dp/3772375073/ref=sr_1_4/303-8934094-8719411?ie=UTF8&s=books&qid=1176295328&sr=1-4
    Was haltet ihr davon? in diesem Buch wird vermutlich mit TASM gearbeitet (siehe Rezension Nr.: 3) kann ich dann diesen Code aus diesem buch problemm los mit NASM übersetzen auch wenn er für TASM gedacht ist?
    Albert



  • albertk13 schrieb:

    ich will mir jetzt ein Buch über assembler kaufen ich hab auch schon eins gefunden:
    http://www.amazon.de/Assembler-m-CD-ROM-Oliver-M%C3%BCller/dp/3772375073/ref=sr_1_4/303-8934094-8719411?ie=UTF8&s=books&qid=1176295328&sr=1-4
    Was haltet ihr davon? in diesem Buch wird vermutlich mit TASM gearbeitet (siehe Rezension Nr.: 3) kann ich dann diesen Code aus diesem buch problemm los mit NASM übersetzen auch wenn er für TASM gedacht ist?
    Albert

    Der NASM vewende eine andere Syntax als der TASM. Deshalb kannst es nicht einfach übernehmen. Ist aber nicht so schwer zum übertragen kurz NASM doku überfliegen, dann sollte das klappen 🙂

    mfg tobZel



  • Ich hab ein wenig gesucht und bin drauf gekommen das es einen "TASM-Kompatiblitätsmodus" gibt da muss man irgendwo -t beim übersetzen angeben!!
    Dann hab ich nasm -h fü hilfe eingegeben und er hat mir folgendes gebracht

    C:\ ... \EIGENE~1\NASM>nasm -h
    usage: nasm [-@ response file] [-o outfile] [-f format] [-l listfile]
                [options...] [--] filename
        or nasm -r   for version info (obsolete)
        or nasm -v   for version info (preferred)
    
        -t          assemble in SciTech TASM compatible mode    <--------
        -g          generate debug information in selected format.
        -e          preprocess only (writes output to stdout by default)
        -a          don't preprocess (assemble only)
        -M          generate Makefile dependencies on stdout
    
        -E<file>    redirect error messages to file
        -s          redirect error messages to stdout
    
        -F format   select a debugging format
    
        -I<path>    adds a pathname to the include file path
        -O<digit>   optimize branch offsets (-O0 disables, default)
        -P<file>    pre-includes a file
        -D<macro>[=<value>] pre-defines a macro
        -U<macro>   undefines a macro
        -X<format>  specifies error reporting format (gnu or vc)
        -w+foo      enables warnings about foo; -w-foo disables them
    where foo can be:
        macro-params            macro calls with wrong no. of params (default off)
        macro-selfref           cyclic macro self-references (default off)
        orphan-labels           labels alone on lines without trailing `:' (default
    off)
        number-overflow         numeric constants greater than 0xFFFFFFFF (default o
    n)
        gnu-elf-extensions      using 8- or 16-bit relocation in ELF, a GNU extensio
    n (default off)
    
    response files should contain command line parameters, one per line.
    
    For a list of valid output formats, use -hf.
    For a list of debug formats, use -f <form> -y.
    

    aber wie muss ich das in die konsole eingeben?



  • Nur so nebenbei:
    Es gibt durchaus auch Prozessoren mit mehreren Registerbanken.
    Bei Mikrocontrollern ist das üblich(z. B. Intel 80x51).



  • Wieso verwendest du für den Anfang nicht einfach MASM?
    Die Verwendung dieses Assemblers ist im Buch nämlich beschrieben.-Der Assembler wird mit der Buch-CD-ROM gleich mitgeliefert.

    Klar ist dieser Assembler nicht mehr topaktuell; genau so wie deine ersten Programme sicher auch...



  • Le code simple schrieb:

    Wieso verwendest du für den Anfang nicht einfach MASM?
    Die Verwendung dieses Assemblers ist im Buch nämlich beschrieben.-Der Assembler wird mit der Buch-CD-ROM gleich mitgeliefert.

    Klar ist dieser Assembler nicht mehr topaktuell; genau so wie deine ersten Programme sicher auch...

    Auch ich möchte dir MASM zum Lernen empfehlen.
    Den MASM gibt es auch topaktuell zusammen mit Visual Studio 2005 - heisst dort ml.exe!
    mfg


Log in to reply