Code Assembleur
Résolu/Fermé
amigos22
Messages postés
7
Date d'inscription
dimanche 16 mai 2010
Statut
Membre
Dernière intervention
30 novembre 2011
-
28 nov. 2011 à 00:34
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 - 1 déc. 2011 à 06:51
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 - 1 déc. 2011 à 06:51
A voir également:
- Code Assembleur
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
3 réponses
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
28 nov. 2011 à 07:31
28 nov. 2011 à 07:31
Oui, c'est normal que ça ne marche pas : tu oublies d'ajuster la valeur lue en ascii à laquelle il faut soustraire 48 pour récupérer un nombre et tu mélange l'utilisation de 'somme' en byte et word...
Data Segment chaine DB "La somme est :$" nbre1 DB ? nbre2 DB ? somme db ? Data EndS Code Segment Assume Cs: Code ; Ds: DATA main: Mov AX,Data Mov DS,AX mov Ah,1 ; lecture de premier nbre int 21h Sub AL,48; Js @Null Cmp AL,09; Ja @null ; test de validitée du caractère mov nbre1,al ; AH n'est pas modifié, il est inutile de le recharger ; lecture de deuxiéme nbre int 21h Sub AL,48; Js @Null Cmp AL,09; Ja @null mov nbre2,al mov al,nbre1 add al,nbre2 mov somme,al mov DX, offset chaine mov AH, 9h int 21h mov dl,somme ; affichage de la somme mov ah,2 int 21h @Null: mov ah,4ch int 21h code ends end main
amigos22
Messages postés
7
Date d'inscription
dimanche 16 mai 2010
Statut
Membre
Dernière intervention
30 novembre 2011
30 nov. 2011 à 23:36
30 nov. 2011 à 23:36
je vous remercie infiniment
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 1/12/2011 à 06:54
Modifié par nicocorico le 1/12/2011 à 06:54
ça me fait plaisir...
Et tu as dû te rendre compte que j'ai oublié d'ajouter 48 pour retransformer la somme en caractère avant sortie !
A vrai dire l'assembleur sous dos, c'est très loin pour moi, je lui préfère très nettement la version 32 bits sous delphi , très puissant et pratique !
Et tout dépend de ce que tu veux faire, mais ce code peut bien sûr être très amélioré, ici ile teste la validitée des entrées et affiche la dizaine du résultat :
Le chêne aussi était un gland, avant d'être un chêne
Et tu as dû te rendre compte que j'ai oublié d'ajouter 48 pour retransformer la somme en caractère avant sortie !
A vrai dire l'assembleur sous dos, c'est très loin pour moi, je lui préfère très nettement la version 32 bits sous delphi , très puissant et pratique !
Et tout dépend de ce que tu veux faire, mais ce code peut bien sûr être très amélioré, ici ile teste la validitée des entrées et affiche la dizaine du résultat :
Data Segment chaine DB "La somme est :$" Data EndS Code Segment Assume Cs: Code ; Ds: DATA main: Mov AX,Data Mov DS,AX mov Ah,1 ; lecture de premier nbre int 21h Sub AL,48; Js @Null Cmp AL,09; Ja @null ; test de validitée du caractère mov BL,AL ; utilise BL pour sauvegarder ; AH n'est pas modifié, il est inutile de le recharger int 21h cmp AL,48; Jb @Null Cmp AL,48 + 09 ; ici on garde la base 48 Ja @null Add BL,al mov DX, offset chaine mov AH, 9h int 21h mov ah,2 Cmp BL,48 + 10; Jb @One ; Teste si le nombre dépasse 09 Mov DL,48 + 01; int 21h ; écrit '1' Sub BL,10 ; retire la dizaine @One: mov dl,BL int 21h @Null: mov ah,4ch int 21h code ends end main
Le chêne aussi était un gland, avant d'être un chêne