Assembler

  • Sonstige

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Hallo,

    habe mal eine Frage, gibt es bei Assembler auch verschiedene Versionen.

    Es gibt wenig Bücher über Assembler und wenn man ein altes ca. 10 Jahre
    alt bekommt gilt das noch heute, oder ist es wie mit den anderen Sprachen
    das die sich teilweise updaten.

    mfg

    elo63

    Internet schrieb:

    Assembler ist eine sogenannte "maschinennahe" Programmiersprache, die die wenigsten Menschen verstehen. Im Vergleich zu Assembler ist C++ eine Sprache für Kleinkinder.

    Besser gesagt: Warum willst du Assembler lernen? Ein kleines OS kannste dir auch mit Cosmos machen (auch wenn es schlecht ist). Die Sprache ist richtig schwer! Also belass es bei den kleinen Sachen, wenn du kein Studium in sowas hast ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Assembler ansich ist sogar ziemlich leicht. Da es i.d.R.(je nach MC natürlich) relativ wenig Befehle kennt. Wenn es nun aber darum geht, ein größeres Programm damit zu schreiben, dann ist es fraglich, ob dies Sinn macht, denn dann wird es doch schwieriger, weil man dann spätestens verstehen muss, wie nen Computer mit Bits zu hantieren hat. Was dann doch relativ komplex werden kann.

    Die Frage ist immer, was ist der Anwendungszweck?

    Und Assembler hat sehr viele Versionen, für jeden Microcontroller kann der anders sein.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Andersrum, Assembler ist sehr leicht und C++ hingegen schwer. Generell kann man sagen je komplexer eine Sprache ist, desto weniger Arbeit hat man. Ich kann dir da was Schönes empfehlen und sogar umsonst ^^
    The Art of Assembly Language Programming Kommt aber drauf an wofür dus brauchst, der Link ist nur für **x86 Prozessoren

    Gonger96 schrieb:

    Assembler ist sehr leicht

    Jup. Es gibt ein paar hundert Befehle, die man nicht mal alle braucht, während man in anderen Sprachen tausende Dinge hat, die man lernen muss. Außerdem lernt man mit Assembler gut, wie so eine CPU "denkt". Assembler ist eine relativ einfach gestickte Sprache die mit wenigen Dingen auskommt.
    Mit freundlichen Grüßen,
    Thunderbolt

    timmi31061 schrieb:

    Assembler ist eine relativ einfach gestickte Sprache die mit wenigen Dingen auskommt.
    Daraus folgt auch, dass bestimmte Konstrukte aus höheren Sprachen kompliziert formuliert werden müssen. Dadurch neigen Assemblerprogramme zu einer menschenunlesbaren Länge. Beispiel: Das Numbergame:

    VB.NET-Quellcode

    1. Dim rnd As New Random()
    2. Do
    3. Console.Write("Zahl zwischen 0 und 9: ")
    4. If Int32.Parse(Console.ReadLine()) = rnd.Next(0, 10) Then
    5. Console.WriteLine("Spieler gewinnt")
    6. Else
    7. Console.WriteLine("CPU gewinnt")
    8. End If
    9. Console.WriteLine("Nochmal?")
    10. While Console.ReadKey() = "y"c

    In Assembler (MIPS) sind das 165 Zeilen. Ich vermute, dass das Programm in x86 deutlich kürzer ausfällt.

    Trade schrieb:

    wenn du kein Studium in sowas hast
    Im Informatikstudium wird sowas gelehrt. Allerdings nicht mal annähernd tiefgreifend genug um irgendein beliebiges Programm zu verstehen. Eigenarbeit ist trotzdem nötig, und davon nicht wenig.

    Neben dem oben verlinkten eBook ist auch diese Seite empfehlenswert: en.wikibooks.org/wiki/X86_Assembly
    Gruß
    hal2000
    Hallo,

    habe einen 64 X2 Duall 6000+ Prozessor welches Assembler wäre dafür das richtige.

    Und meine Frage wenn man jetzt ein anderes Assembler nimmt, kann man damit den Prozessor zerschießen.

    Bin Anfaänger was das angeht.

    mfg


    elo63
    Welchen weiß ich nicht. Aber zerschießen kannst du nicht wirklich was im Sinne von kaputt machen. Es wird halt nicht laufen, da der Prozessor den verwendeten Befehlssatz nicht verwenden kann.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Ein Assembler ist immer an einen Prozessor oder eine Prozessorfamilie gekoppelt.
    Wenn Du mit programmieren anfängst. ist Assembler die denkbar schlechteste Lösung als Startup.
    Fang mit einem ordentlichen Compiler an, da müsstest Du mit C / C++ sehr gut hinkommen.
    Und wenn es sich um einen kompatiblen Prozessor in einem kompatiblen PC handelt, dann mach es gleich richtig mit .NET (ohne jetzt VB oder C# zu präferieren).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    danke für die vielen antworten, dennoch würde ich gerne wissen welche Version ich bei meinem Prozessor brauche.

    Gibt es ein Editor freeware für Assembler programmierung.

    mfg

    elo63
    Du könntest NASM verwenden oder aber auch den GAS Assembler.
    Da du hier ja einen normalen Computer Prozessor zu haben scheinst.

    Editoren->Texteditor
    Da jedes Assembler für die unterschiedlichen Architekturen anders ist und du außerdem nur deine Befehle hast und nicht sonderlich viel mehr, weiß ich nicht, ob da eine IDE überhaupt richtig Sinn macht.

    Aber was ist denn nun dein Vorhaben?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Wenn du nur Interesse hast, etwas herumzuexperimentieren. Also den Assembler Code nicht für etwas spezielles braucht, dann kannst du dir Jasmin ansehen.

    Jasmin ist zwar ein Assembler für Java, also eigentlich ein Interpreter, aber damit kannst du dir schnell und einfach einen Überblick verschaffen wie Assembly aussieht und welche Schwierigkeiten hinter der Assemblyprogrammierung stecken. Und das mit IDE, Debugger und ziemlich brauchbaren Fehlermeldungen.

    Ansonst kann man nur, wie bereits gesagt, NASM oder MASM oder einen anderen Compiler deiner Wahl empfehlen, ist halt ziemlich viel Geschmackssache.
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Visual Studio ist ganz gut geeignet. Beispiel:

    C-Quellcode

    1. #include "stdafx.h"
    2. #include <cstdio>
    3. __declspec(naked) int quadrat(int n) {
    4. _asm{
    5. push ebp;
    6. mov ebp, esp;
    7. mov ecx, DWORD PTR [ebp+8]; // ecx <- n
    8. xor eax, eax;
    9. mov ebx, 0xFFFFFFFF;
    10. lloop:
    11. add ebx, 2;
    12. add eax, ebx;
    13. dec ecx;
    14. cmp ecx, 0;
    15. jnz lloop;
    16. pop ebp;
    17. ret;
    18. }
    19. }
    20. int _tmain(int argc, _TCHAR* argv[])
    21. {
    22. int x = 3;
    23. int y = quadrat(x);
    24. printf("x^2 = %d", y);
    25. return 0;
    26. }
    Gruß
    hal2000