MASM heapsort c++ na masm




damian0x130.12.2008 02:45:03
#
Dołączył: 30.12.2008

Witam, mam taki problem siedze juz 3 dzien i nie moge znalesc bledu w kodzie ... a mianowcie przerobilem kod z c++ na masm : [c] int k=0; while(k<n-1) { // zapisywanie do ciagu wynikowego float w=M[k]; M[k]=M[n-1]; M[n-1]=w; int j=n-1; while(j>k) { int i=j*2; i-=n; if(i<=k) break; if(i>k+1 && czymniej(M[i-1],M [i])==true) i--; if(czyniemniej(M [i],M[j])==true) break; w=M [i]; M [i]=M[j]; M[j]=w; j=i; } k++; }

[/c]

na

[asm] XOR EBX,EBX ; i XOR ECX,ECX ; j XOR EDX,EDX ; k XOR ESI,ESI ; n-1 ; u4 - temp ; u1 - k+1 mov ESI,licznik dec ESI

petla1:
    cmp EDX,ESI
    jae koniec1 ; spr 
        fld [tab+8*EDX]
        fstp u4
        fld [tab+8*ESI]
        fstp [tab+8*EDX]
        fld u4
        fstp [tab+8*ESI]
        mov ECX,ESI
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            petla2:
                cmp ECX,EDX
                jbe koniec2                     ; spr
                    mov EBX,ECX
                    sal EBX,1
                    sub EBX,licznik
                        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        cmp EBX,EDX
                        jbe koniec2
                        mov u1,0
                        mov u1,EDX
                        inc u1
                            cmp EBX,u1
                            jbe tutaj
                                fld [tab+8*EBX]
                                dec EBX
                                fld [tab+8*EBX]
                                inc EBX
                                fcom                                    ; ### cmp st(0),st(1) x&lt;y == true 
                                fstsw AX
                                sahf
                                jae czyniemniej
                                dec EBX                                 
                            czyniemniej:
                            ffree st(1)
                            ffree st(0)
                            tutaj:
                            mov ax,0
                            fld [tab+8*ECX]
                            fld [tab+8*EBX]
                            fcom                                    ; ### cmp st(0),st(1) x&lt;y == true 
                            fstsw AX
                            sahf
                            jae czysc
                            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                            ffree st(1)
                            ffree st(0)
                            fld [tab+8*EBX]
                            fstp u4
                            fld [tab+8*ECX]
                            fstp [tab+8*EBX]
                            fld u4
                            fstp [tab+8*ECX]
                            mov ECX,EBX
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            jmp petla2
            czysc:
            ffree st(1)
            ffree st(0)
            koniec2:
        inc EDX
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    jmp petla1
koniec1:

[/asm]

oczywiscie sortowanie ma byc dla liczb rzeczywistych

dziala mi dla max 6 liczb dam wiecej i program sie sypie

KOrzystam z Masm32 v10 -> winda

Z gory dzieki za pomoc




Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?