Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Simple addition [ Archives / Forum general 80xxx ] (nostra)

vendredi 14 mars 2003 à 18:00:30 | Simple addition

nostra

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'

vendredi 14 mars 2003 à 18:07:16 | Re : Simple addition

Nemesis

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


-------------------------------
Réponse au message :
-------------------------------

> 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'

vendredi 14 mars 2003 à 18:22:39 | Re : Simple addition

nostra


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.

-------------------------------
Réponse au message :
-------------------------------

> 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
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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'
>



Cette discussion est classé dans : valeur, db, mov, segment, dx


Répondre à ce message

Sujets en rapport avec ce message

Addition pourtant simple [ par nostra ] Big totoJe n'arrive pas à afficher le résultat de l'addition malgré les remarques de Nemesis. Merci de trouver le ou les erreurs commises. ;---------- Multiplication de deux nombres compris entre 0 et 99 en assembleur [ par petitspirou ] salut, j'ai un programme a faire mais je suis nul en assembleur, voici ce que j'ai fais mais ca ne fonctionne pas.Quelqun peut'il me le corriger et me Graphique [ par RM50Man ] Bonjour a tous!!!!Je veux tracer une ligne mais ca ne marche pas, je passe les parametre par la pile,et ensuite ds la fonction principale, je remplis Mini OS !! debut [ par Hardouz ] salut a tous ! je debut en ASM je vx bosser un px en ASM je connais l'architechture ect !!! j'ai fais un pti programme mais il ya un probléme 1/ lors interruption [ par aboulkhir ] salut j essaye de gerer le clavier en interruption en asselmbleur voila mon programme je travaille sous debug en invite de commande de windowsclimo Probleme avec NASM et ALINK [ par epineurien ] Bonjour ! Voilà ma question : Je commence à utiliser NASM mais j'ai quelques problemes avec le linker ; Alink. Avec ce code (issu de la doc. de NASM Petit problème pour comparer (cmp) [ par smok1360 ] Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l' tableau avec 8086!help me [ par ASBYoucef ] 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 de Modifer le vecteur d'interruptions [ par vecchio56 ] Bonjour J'essaie de refaire la source http://www.cppfrance.com/code.aspx?ID=33558 en assembleur (ca consiste à modifier la routine de l'interruption 0 Ennoncés à corriger svp :-) [ par did2604 ] Bonjour à tous,Mon professeur m'a demandé de convertir les énoncés (en langage C) suivants en assembleur, quelqu'un aurait-il la gentilesse de me les


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,19 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.