Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3361 connectés 

 


Dernière réponse
Sujet : A tous ceux qui sont fort en assembleur 80x86 , viendez svouplait !!!
freerider_freestyler 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:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
freerider_freestyler 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:
Ace17 Tu peux pas nous montrer ce que t'as fait déja?
freerider_freestyler 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:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)