Bonjour tout le monde,
je bloque sur cet exercice. Le but est de créer un programme en assembleur qui puisse determiner le min et le max d'une suite de nombre
de l'aide svp
Bonjour tout le monde,
je bloque sur cet exercice. Le but est de créer un programme en assembleur qui puisse determiner le min et le max d'une suite de nombre
de l'aide svp
Bonjour et bienvenue,
Merci de passer au moins une fois par les règles du forum Assembleur. Ceci dit, tu as posté ton message dans « x86 16 bits », donc il n'y a pas de raison d'en douter a priori.
Il n'y a rien de difficile en soi : tu utilises CMP pour comparer deux registres. Tu peux ensuite utiliser à peu près n'importe quoi pour les lire et aller les chercher. Toutefois, il y a des instructions dédiées à ce genre de choses sur Intel, et certains registres sont consacrés à ces usages.
Dans un premier temps, tu peux déclarer deux entiers en mémoire au sein de ton code, qui te serviront à recevoir les minimums et maximums que tu cherches :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 minimum: dw 0ffffh maximum: dw 0
S'il s'agit déjà de nombres entiers sur 16 bits et qu'ils sont consécutifs en mémoire, tu peux faire pointer le couple DS:SI (Data Segment et Source Index) sur le début de cette suite, et utiliser le registre CX pour spécifier le nombre de valeurs à lire. Chaque fois que tu appeleras LODSW, tu chargeras automatiquement la valeur pointée dans AX et feras passer DS:SI à la suivante.
Dès lors, tu peux comparer AX à une valeur en mémoire en faisant par exemple « CMP AX,minimum ». Cette instruction comparera la valeur contenue dans AX à celle se trouvant à l'adresse indiquée par « minimum ». Tu fais ensuite un saut avec JA (Jump Above) ou JB (Jump Below) selon ce que tu cherches à vérifier. En l'occurrence, tu peux utiliser JA pour sauter l'instruction suivante si AX est plus grand que « minimum », laquelle instruction serait tout simplement « MOV minimum,AX » pour mettre à jour le nouveau minimum le cas échéant.
Tu fais ensuite exactement la même chose avec le maximum.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager