ASBYoucef
Messages postés6Date d'inscriptionlundi 14 mars 2005StatutMembreDernière intervention 1 mars 2008
-
1 mars 2008 à 19:11
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 2014
-
5 mars 2008 à 08:16
bonsoir!j'ai fait un programme qui saisie un tableau,puis il cherche le maximum,mais le problème c'est que il donne une résulata fausse,il donne la dernière valeur introduite.le saisie fonctionne bien ,le triage fonctionne bien,il reste just le passage du saisie vers le triage,la partie qui est en gras :aidezzzzzzzzzzz moi svp ,voici le prgramme:
pile segment stack
db 100h dup(?)
pile ends
data segment
;msg db "le nombre superieur est","$"
tab db 4 DUP (?)
data ends
code segment
assume cs:code, ds:data
main:
mov ax,data
mov ds,ax
mov cx,4
lea bx,tab
push bx;je sauvgarde l'adresse
;*********saisie des valeurs de tab*******
boucle: mov ah,1
int 21h
lea bx,tab
mov [bx],al
inc bx
loop boucle
;*******************************************************
pop dx ;
mov bx,dx
mov bx,offset tab ;charger bx par l'adresse du 1er element du tableau
mov al,[bx] ;charger ax par la valeur qui se trouve dans l'adresse contenu dans bx
mov cx,3 ;charger cx par le nombre d'element du tableau,avec LOOP
label:
mov ah,[bx+1] ;charger AH par la valeur suivant
cmp ah,al ;comparer AH avec AL
ja tes ; si AH superieur à AL,saut vers TES
inc bx
loop label
jmp fin
tes:
mov al,ah ;ah superieur à al donc il va l'écraser
inc bx ; incrémenter l'adresse pour pointer sur la prochaine valeur
loop label ;sauter vers label
fin:
mov dl,al ;AH contient la valeur superieur final du tableau
or dl,30h ;convertion
mov ah,02h ;fonction qui affiche un carractére
int 21h ;interruption
mov ah,4ch ;fonction pour sortir du dos
int 21h ;interruption