zahlen aneinander reihen



  • Also mein problem ist folgendes
    nach einer eingabe habe ich 4 Bytes mit jeweils einer zahl
    Das ganze sieht so im speicher aus(mit der zahl 9999):

    Binär:

    |0000 1001|0000 1001|0000 1001|0000 1001|
    

    Hexadezimal:

    |09|09|09|09|
    

    Dezimal:

    |009|009|009|009|
    

    Wie mus ich jetzt vorgehen wen ich die jetzt zusamen schieben will zur 9999
    also so das im speicher das hier steht:

    Binär:

    |0000 0000|0000 0000|0010 0111|0000 1111|
    

    Hexadezimal:

    |00|00|27|0F|
    

    Dezimal:

    |000|000|39|255|
    

    edit: ich benutze MASM zum Assemblieren



  • z.B.:

    .data
        bcd db 9,9,9,9
    .code
    
    xor edx,edx                 ; edx = num = 0
    xor ecx,ecx                 ; ecx = i = 0
    .while ecx < LENGTHOF bcd
        ; imul edx,edx,10
        lea eax,[edx*8+edx]     ; num = num*10 + bcd[i]
        lea edx,[edx+eax]       ;
        movzx eax,bcd[ecx]      ;
        lea edx,[eax+edx]       ;
        inc ecx                 ; i = i + 1
    .endw
    ; edx = num
    


  • Man kann zum Konvertieren auch machen
    9 * 0ah^0 + 9 * 0ah^1 + 9 *0ah^2 + 9*0ah^3 usw.

    Für das Rechnen mit Bcd Zahlen braucht man nicht groß konvertieren, dafür sinds ja bcd Zahlen.


Anmelden zum Antworten