hex nach bcd



  • hallo leute

    kann mit jemand erklaeren wie ich z.b. den wert von eax nach bcd konvertieren kann ?

    bin mit google nicht wirklich fuendig geworden oder bin nicht drauf gekommen das ich es gefunden hatte

    cermy

    Meep Meep



  • Hallo,

    das müsste eigentlich funktionieren.

    mov  ecx,0
              mov  ebx,10
              mov  edi,0
              mov  eax,HexNumber
    next:
              xor  edx,edx
              div  ebx
              and  edx,0x0f
              shl  edx,cl
              or   edi,edx
              add  ecx,4
              cmp  eax,0
              jne next
              mov  BcdNumber,edi
    

    Du solltest dir vieleicht noch überlegen die BcdZahl in einen Buffer zu schreiben, da das register EDI zu klein werden könnte.
    Z.B. 0xffffffff = 4294967295, diese BcdZahl passt nicht mehr in EDI.



  • re

    muesste der prozessor das nicht auch selber koennen ? schliesslich hat er ja auch eigene bcd-befehle.

    Meep Meep



  • Du meinst z.B. DAA, Decimal Adjust after Addition.

    mov al,19h   //BCD
           add al,19h   //BCD
                                ERGEBNISS   al= 32h 
    Da du aber mit BCD rechnen willst
           DAA
                                ERGEBNISS   al= 38h
    

Anmelden zum Antworten