Simple addition

cs_nostra Messages postés 3 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 14 mars 2003 - 14 mars 2003 à 18:00
cs_nostra Messages postés 3 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 14 mars 2003 - 14 mars 2003 à 18:22
:-p Big toto

Je n'arrive pas à afficher les valeurs A (=3) et B(=2) ainsi que le résultat de l'addition. Merci de trouver le ou les erreurs commises.

;-----------------------------------------------;
; Pour Compiler: tasm32 tlink ;
;-----------------------------------------------;

; SEGMENT DE DATA-------------------------------
data16 segment public ; déclaration du segment de data
titre db 10,10
db " **********************************************",10,13
db " * *",10,13
db " * OPERATION SIMPLE *",10,13
db " * ADDITION DE 2 NOMBRES *",10,13
db " * *",10,13
db " **********************************************",10,10,13,'$'

message_A db 10,13," Soit A = ",'$'; une variable
message_B db 10,13," Soit B = ",'$'; une variable
message_AB db 10,10,13," A + B = ",'$'; le résultat de l'addition

Valeur_A db 3
Valeur_B db 2

data16 ends

; SEGMENT DE CODE----------------------------
code16 segment public ; déclaration du segment de code
assume cs:code16, ds:data16, ss:stack16

start16:
; Adapte le segment de data: ds
mov ax, data16 ; ax = data16
mov ds, ax ; ds = ax

; Saisie de l'identifiant et du passe
debut:

mov dx, offset titre ; offset de titre
mov ah, 09h ; Afficher un texte à l'écran
int 21h ; Interruption DOS

; Affiche la valeur de A
mov dx, offset message_A
int 21h ; Interruption DOS
mov dx,offset Valeur_A
int 21h ; Interruption DOS

; Affiche la valeur de B
mov dx, offset message_B
int 21h ; Interruption DOS
mov dx, offset Valeur_B
int 21h ; Interruption DOS

; Calcule A + B
add dx, offset valeur_A ; Ajoute dans Valeur_B la Valeur_A
push dx ; Empile (Valeur A+B)

; Affiche le résultat de A + B
mov dx, offset message_AB
int 21h ; Interruption DOS
pop dx ; Dépile (Valeur A+B)
int 21h ; Interruption DOS


; Quitte le programme
mov al, 00h ; pas de problèmes
mov ah, 4ch ; quitter le programme
int 21h ; Interruption DOS

code16 ends ; fin de text

; SEGMENT DE STACK----------------------------
stack16 segment stack
db 200h dup (?)
stack16 ends

end start16 ; fin du programme
; débute à 'start16'

2 réponses

cs_Nemesis Messages postés 22 Date d'inscription dimanche 6 octobre 2002 Statut Membre Dernière intervention 18 avril 2003
14 mars 2003 à 18:07
Pour afficher 3 ou 2, il faut écrire:

Valeur_A db "3$"
Valeur_B db "2$"

si tu écris:

Valeur_A db 3

C'est le code ASCII 3 (ou 2) qui sera affiché, et non pas le caractère "3" qui correspond au caractère ASCII 51

En espérant t'avoir aidé...

Nemesis
0
cs_nostra Messages postés 3 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 14 mars 2003
14 mars 2003 à 18:22
:-p Big toto

merci de la réponse.
mais une autre erreur subsiste puisque le résultat de l'addition n'apparaît pas. merci de trouver la réponse.
0
Rejoignez-nous