Wie verknüpfe ich in x86 Assembler nach einer Multiplikation die zwei Werte in DX:AX bzw. EDX:EAX?



  • Hallo,

    ch bin gerade dabei x86 Assembler mit NASM zu lernen und ich habe das Problem, dass sich nach einer Multiplikation 2er Words, sich das Ergebnis in zwei verschiedenen Registern befinden also DX:AX bzw. EDX:EAX. Wie verknüpfe ich diese miteinander?

    Mit freundlichen Grüßen
    Adrox



  • Angenommen du hast DX:AX und moechtest diese ins Register EDX speichern, dann kannst du das mit einem Links-Shift und einer Add Instruktion machen (Ungetestet, Intel Syntax):

    shl edx, 16
    add edx, ax
    

    Wenn du ein anderes Register als EDX moechtest, dann kannst du zuerst ein mov verwenden.



  • Danke es funktioniert 🙂
    Die Frage ist jetzt nur noch warum? 😃



  • Angenommen wir haben
    DX = 0xAAAA
    AX = 0xBBBB
    Beide Register enthalten 16 Bits (deshalb 4 Mal eine Hex-Ziffer).

    EDX ist 32 Bit gross und, da DX die least significant bits von EDX sind, gilt (ich nehme hier einfach mal an dass die oberen Bits alle 0 sind)
    EDX = 0x0000AAAA

    Mit shl edx, 16 werden die Bits um 16 Bits nach links geschoben (shl steht fuer shift left), d.h. wir haben dann
    EDX = 0xAAAA0000

    Wenn du dann AX zu EDX addierst bekommst du
    EDX = 0xAAAABBBB.



  • Danke für diese Erklärung ich verstehe es jetzt. Ich muss mich noch daran gewöhnen in Hexadezimal zu denken 😃



  • @Adrox, welches Tutorial nutzt du dazu? Bist du damit zufrieden? Ich habe natürlich per Suchmaschine auch welche gefunden, aber vielleichht hast du ja eins, das ich noch nicht kenne 🙂



  • Ich arbeite mit mehreren Tutorials. Zunächst mal primär mit dem: https://www.tutorialspoint.com/assembly_programming/index.htm

    Dann noch mit dem (kann man als PDF-Version downloaden):
    https://de.wikibooks.org/wiki/Datei:Assembler.pdf

    Und dann noch allgemein mit verschiedenen Themen mit Google.

    Mit beiden oben genannten bin ich zufrieden. Ich finde das sich beide sogar ergänzen



  • Vielen herzlichen Dank!


Log in to reply