assembler auf 64bit



  • hgfds schrieb:

    Es muss doch möglich sein, bei einem 64bit auch die ganzen kleinen alten Beispiele laufen zu lassen? 😞

    Nein, das ist nicht möglich:
    - 16 Bit DOS-Code wird von Windows nicht mehr ausgeführt (-> Emulator: z.B. DOSBox)
    - zum erstellen brauchst du einen 16Bit-Linker, der nicht im Visual Studio enthalten ist.
    - DOS ist tot! - verschwende deine Zeit nicht mit so einem Misst.
    - es ist empfehlenswert mit 32Bit Code unter Windows anzufangen. Der Umstieg auf 64 Bit ist dann sehr leicht.
    - einen sehr guten Einstig in die Win32-Assmbler Programmierung bieten Iczelions berühmte Win32Asm tuorials (die orginal Seite gibt es leider nicht mehr)



  • hgfds schrieb:

    Ok erstelle und assembeliere nun auch über VS.
    Bekomme trotzdem Fehlermeldung wie
    1>.\test.asm(6) : error A2006:undefined symbol : DGROUP

    Es ist sehr hilfreich, die Masm-Syntax gut zu kennen, um solche Fehlermeldungen zu vermeiden.
    Aber im 64-Bit-Mode gibt es auch keine Kompatibilität zu 16 Bit Code.
    Normalerweise sollte Windows die Kompatibilität anbieten, aber stattdessen nimmt man lieber Dosbox von Linux Programmierern, das hat wohl auch damit zu tun, dass Linux/Unix schon früher mit 64Bit vertraut war.

    Joachim Rhode ( http://www.amazon.de/Assembler-Grundlagen-Programmierung-mitp-Professional/dp/3826614690 ) hat auf seiner Internetseite auch einige der Iczelion-Tutorials auf deutsch übersetzt:
    http://www.joachimrohde.com/cms/xoops/modules/articles/index.php?cat_id=2



  • Ok, gibt es denn gute 64bit Tutorials, die auch von Anfang bis "Ende" (also die Grundlagen mit Beispielen) einmal durchgehen? 😕



  • also es würde mir schon ein tutorial reichen, wo ich anschließend das Know-How habe um einfache C++ Operationen / Algorithmen nachzuprogrammieren



  • hannox schrieb:

    einfache C++ Operationen / Algorithmen

    das sind z.B.?



  • Also so, dass ich alle grundlegene Sachen wie Schleifen, Conditions, Rechenoperation etc. in Assembler nachbilden kann.

    Problem ist nur, alle Tutorials sind älter und funktionieren nicht auf MASM 64 bit



  • wwg schrieb:

    hannox schrieb:

    einfache C++ Operationen / Algorithmen

    das sind z.B.?

    Hallo,

    ich schreibe auch alles mit MASM.
    Einige Windowsfunktionen habe ich ebenfalls selbst mit MASM erstellt, da der
    Aufwand recht gering ist und ein bisschen lernen kann ja nicht schaden 😉

    Dazu zählen:
    LEN() = Stringlänge
    itoa = Integerzahl nach ASCII
    atoi = ASCII nach Integer
    UCase() = Alles in Großbuchstaben
    LCase() = Alles in Kleinbuchstaben
    Instr() = Zeichen in einer anderen Zeichenkette suchen (war etwas anspruchsvoller)
    Replace() = Ersetzen einzelner Zeichen in einem String durch ein anderes Zeichen
    ntoa() = IP Adresse in ASCII String umwandeln

    Gruß, Nicky



  • Also die Grundlagenstichworte zu 64Bit findet man u.a. (auf deutsch) hier http://www.complang.tuwien.ac.at/ubvl/amd64/amd64h.html und das reicht normalerweise, wenn man gewisse Grundlagen verstanden hat - und diese kann man auch mit 16 Bit erwerben (oder notfalls auch in 8 Bit, aber dann nicht unbedingt Intel-kompatibel).

    Algorithmen findet man in verschiedenen Assemblergrammatiken und Beispielen, aber lernen würde ich erstmal den Algorithmus mit Papier und Bleistift, und dann nach Assembler übersetzten, dann spielt auch die Grammatik nicht mehr so die große Rolle.

    Für (für Microsoft) Masm gibt es auch Beispiele für ML und Infos zur Syntax: http://msdn.microsoft.com/en-us/library/afzk3475(v=vs.110).aspx
    Algorithmen für 32bit findest du zuhauf, zwar in verschiedenen Grammatiken, aber das macht (fast) nix, kleinere Programme (32Bit, auch 16Bit)mit Ida(Free) anschauen, oder auf z.B. auch Beispiele auf diversen masm32-Seiten).
    (oder einfach mal dieses Forum durchstöbern, inklusive Faq, da hier ja fast immer Einsteiger oder unbeschriebene Blätter nachfragen.

    Aber für den Anfang scheint es mir erstmal wichtiger zu sein, sich mit ML und dem Compilieren besser vertraut zu machen.

    Am besten machst du dir erstmal eine Mappe mit Beispielen nach Schwierigkeitsgrad geordnet inklusive mit einer Liste mit Stichworten, was du schon gelernt hast, und was du als nächstes Lernen möchtest.
    Viele Einsteiger, die hier reinschreiben, haben Probleme beim Compilieren, das ist aber meist nur Kleinkram.

    Und Seiten wie diese http://www.lomont.org/Math/Papers/2009/Introduction to x64 Assembly.pdf helfen dir möglicherweise auch über die ersten Schritte weiter. Nicht abschrecken lassen.



  • Danke für die ausführliche Antworten.

    @supernicky: ja genau in die Richtung wollte ich auch. Einfach paar kleine eigene Sachen schreiben

    @nachfeuer:
    Möchte ich ja aber ich komme ja nicht mal dazu, ein normales Programm zum laufen zu bringen.

    Sprich
    - datenregister laden
    - variabel lesen
    - ausgeben

    .MODEL Small
    .STACK 100h
    .DATA
    Meldung DB "Hallo Welt$"
    .CODE
    Start: mov ax,@data
    mov ds,ax
    mov dx,OFFSET Meldung
    mov ah,09h
    int 21h
    mov ah,4Ch
    int 21h
    END Start



  • Ah hab jetzt erst dein Link geöffnet.
    Dort sehe ich die MASM Symbol Reference. Da finde ich bestimmt die Alternative zu meinem DGROUP Problem


Anmelden zum Antworten