Besoin d'aide (débutant en assembleur)

Signaler
-
Messages postés
7
Date d'inscription
vendredi 16 décembre 2011
Statut
Membre
Dernière intervention
27 décembre 2012
-
salut a tous :) ! bon je suis débutant en assembleur (j'essai de me familiariser petit a petit ) donc on nous demande ce qui suit :
Ecrire un programme en assembleur qui permet de remplir un tableau de 9 chiffres , et chercher le minimum et le maximum dans ce tableau et les afficher.

j'ai pas su comment procéder pour chercher le max et min je suis arrivé ici

Data segment
Tab db dup(0)
Mess1 DB ‘donner un chiffre $’
Data ends
Code segment
Assume ds:dat,cs:code
Deb:
mov ax,data
mov ds,ax
lea dx,mess1
mov ah,9
Int 21h
MOV cx,9
Mov si,0

Saisie:
mov ah,1
int 21h
cmp al,48
jb saisie
Cmp al,57
Ja saisie
Mov [tab+si],al
Inc si
Loop saisie

si quelqu'un pourrais bien m'orienter ! merci bcp d'avance ^^

2 réponses

Messages postés
559
Date d'inscription
jeudi 28 novembre 2002
Statut
Non membre
Dernière intervention
27 octobre 2020
2
Une instruction de comparaison (cmp) suivi de sauts comme jg,jl ...Attention aux nombres signés ou non.
Messages postés
7
Date d'inscription
vendredi 16 décembre 2011
Statut
Membre
Dernière intervention
27 décembre 2012

a) Tab doit etre défini comme un tableau
Tab DB 9 dup(0)
sinon le tableau va déborder sur le message, certe ce n'est pas grave.
b) utiliser '0' et '9' à la place de 48 et 57 cela sera plus claire.
c) il est possible de faire
LEA si,Tab
mov [si],al
à la place de
mov si,0
mov [tab+si],al
Envisager aussi d'utilise ES:DI à la place de DS:SI
et de faire STOSB.
d) initialiser AL un min à '9' et AH un max à '0'
refaire un boucle
MOV CX,9
xor si,si ; nettement moins lisible mais ça m'amuse.
mov bl,'9'
mov bh,'0'
boucle :
mov al,[tab+si]
cmp al,bl
ja mini
mov bl,al
mini:
cmp al,bh
jb maxi:
mov bh,al
maxi :
inc si
loop boucle
... enfin quelque chose dans ce genre.
e) je suppose que c'est ASSUME DS:data et non 'dat' ce programme n'a jamais été assemblé ?