A tous ceux qui sont fort en assembleur 80x86 , viendez svouplait !!!

A tous ceux qui sont fort en assembleur 80x86 , viendez svouplait !!! - Programmation

Marsh Posté le 03-04-2002 à 21:20:22    

help me :
 
tri d'un tableau par ordre croissant
 
le programme qui suit consiste a afficher un tablo d'entiers non signés
sur 16 bits,dont la taille ainsi que les valeurs sont definies comme variables
du programme, puis a le trieret a afficher le resultat de ce tri. Pour se faire
il est conseillé d'utiliser une fonction intermediaire qui retourne (par un
registre) l'adresse de l'element minimum d'un tablo.
 
je dois faire ce programme en assembleur.J'ai bataillé :??:  mais ca marche pas  :fou:  
 
Si quelqu'un pouvait me donner un petit coup de main , ca serai sympa !! :jap:  
 
PS : il me faudrai vos solutions avant vendredi !!!!
 
Merci d'avance !!!!
 :jap:  :jap:  :jap:  :jap:

Reply

Marsh Posté le 03-04-2002 à 21:20:22   

Reply

Marsh Posté le 04-04-2002 à 08:47:51    

Tu peux pas nous montrer ce que t'as fait déja?

Reply

Marsh Posté le 04-04-2002 à 13:19:59    

voici c que g deja fait !
ca doit normalement lire les valeurs dans le tablo!
Il y a une erreur :cry:  ,vers la fin avec le loop cond je crois!
Si quelqu'un pourrait la corriger et me dire la soluce pour classer le tablo !!!!
 
data       segment
tablo      dw    1,2,55,3,48,69
taille     dw    6
dix        dw    10
data       ends
 
pile       segment stack
           dw    10 dup (0)
pile ends
 
code       segment
           assume ds:data,cs:code,ss:pile
 
main:      mov   ax,data
           mov   ds,ax
 
           mov   ax,pile
           mov   ss,ax
 
           lea   si,tablo
           mov   ax,0
           mov   cx,taille
 
empile:
           add    si,ax
           push   [si]
           mov    si,0
           add    ax,2
           loop   empile
           
           mov    cx,taille
           mov    bx,65534
           mov    bp,sp
           mov    bp,0
           mov    bp,bx
 
 
cond:      mov    ax,[bp]
           cmp    ax,9
           jbe    aff1
           jg     aff2
 
aff1:      mov    dl,al
           add    dl,48
           mov    ah,02h
           int    21h
           sub    bp,2
           mov    dl,0Dh
           mov    ah,2
           int    21h
           mov    dl,0Ah
           mov    ah,2
           int    21h
           loop   cond
 
aff2:           push     cx
                push     ax      
                mov     cx,0
compteur:       mov     dx,0
                div     dix
                add     cx,1          ; CX est le nombre de chiffres
                cmp     ax,0
                jne      compteur
 
                mov     ax,1
 
diviseur:       cmp     cx,1
                je      ftq
                mul     dix            ; on calcule le diviseur
                sub     cx,1         ; Ax est le diviseur 10expCX
                jmp     diviseur
               
ftq:            mov     bx,ax          ; on place le diviseur dans bx
 
                pop     ax
                 
repete:         mov     cx,0
                mov     dx,0
                div     bx
                mov     cx,dx
                mov     dl,al
                add     dl,48
                mov     ah,2
                int     21h
                mov     ax,bx
                mov     dx,0
                div     dix
                mov     bx,ax
                mov     ax,cx
                cmp     bx,1
                jge     repete
 
                sub     bp,2
                mov    dl,0Dh
                mov    ah,2
                int    21h
                mov    dl,0Ah
                mov    ah,2
                int    21h
                pop    bx
                loop   cond
 
           
           mov    ah,4ch
           int    21h
                       
code       ends
           end    main
 
merci d'avance :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed