Multiplication de deux nombres compris entre 0 et 99 en assembleur
cs_petitspirou
Messages postés1Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention28 avril 2004
-
28 avril 2004 à 17:46
bebelover1
Messages postés2Date d'inscriptionvendredi 9 mai 2008StatutMembreDernière intervention 9 mai 2008
-
9 mai 2008 à 17:17
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 le renvoier. Un grand merci d'avance a celui qui le fera, il me sauvera.( je doit le rendre mercredi prochain a l'ecole)
dosseg
.model small
.stack 100h
.data
debut db 13,10,"Multiplication de 2 nombres entre 0 et 99 $"
dem1 db 13,10,"Entrez le premier nombre $"
dem2 db 13,10,"Entrez le second nombre $"
produit db 13,10,"Le r‚sultat de la multiplication est : $"
resul db 5 dup("0")
nb1 db 3, 4 dup(?)
nb2 db 3, 4 dup(?)
ch3 db ?
ch4 db ?
ch5 dw ?
r1 db 0
r2 db 0
r3 db 0
r4 db 0
divi dw 10
multi db 10
.code
mov ax, @data
mov ds, ax
mov dx, offset debut ;affiche le titre
mov ah, 09h
int 21h
mov dx, offset dem1 ;demande le premier chiffre
mov ah, 09h
int 21h
mov dx, offset nb1 ;enregistre le premier chiffre
mov ah, 0Ah
int 21h
sub nb1+2,30h ;conversion -> ascii
sub nb1+3,30h
mov al, nb1+2 ;enregistre le premier nombre
mul multi
mov nb1+2, al
add al, nb1+3
mov ch3, al
mov dx, offset dem2 ;demande le deuxieme chiffre
mov ah, 09h
int 21h
mov dx, offset nb2 ;enregistre le deuxieme chiffre
mov ah, 0Ah
int 21h
sub nb2+2,30h ;conversion -> ascii
sub nb2+3,30h
mov al, nb2+2 ;enregistre le deuxieme nombre
mul multi
mov nb2+2, al
add al, nb2+3
mov ch4, al
mov al, ch3 ;multiplie les deux nombres
mul ch4
mov ch5, ax
mov dx, 0
mov ax, ch5
cmp ax, 0
je suite
div divi ;divise par 10
mov r1, dl ;stock le reste
cmp ax, 0
je suite
div divi ;divise par 10
mov r2, dl ;stock le reste
cmp ax, 0
je suite
div divi ;divise par 10
mov r3, dl ;stock le reste
cmp ax, 0
je suite
div divi ;divise par 10
mov r4, dl ;stock le reste
TangiX
Messages postés59Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention 2 juin 2004 29 avril 2004 à 10:01
Desolé, on est pas adepte de la resolution gratuite d'exercice, en revenche ya pa de probleme pour t'aider a trouver la ou les erreurs
Face a ce genre de probleme, il y a deux solutions:
la premiere consiste a diviser ton prog en plusieurs ss/routines que tu teste independement des autres
(En plus le programme est plus clair et structuré : ton prof appreciera !)
la deuxieme consiste a tracer ton prog a l'aide d'un debugger. c un peu plus bourrin (moi j'apelle ca du brute-programming). un prog tel que TD.EXE (borland) est tres bon pour ca (prog DOS). La technique consiste a suivre l'execution du prog instr par instr et de comparer la reaction de chacune par rapport a ce qui était prévu
BonDev'
ps: ya une troisieme technique qui consiste a ne pa rendre ton devoir, enfin c a toi d'voir :-p .
-----------------------------------
fan de prog système (voir taré)
En attente de Valium ! lol
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 8 mai 2004 à 15:54
Je ne suis plus a l'école ce qui me permet de dire au prof qui colle des exercices , d'adapter son assembleur a windows,ça serait beaucoup mieux ,MASM32 existe et on peut faire une simple multiplication sous windows.j'insiste ,c'est faisable !?
ToutEnMasm
bebelover1
Messages postés2Date d'inscriptionvendredi 9 mai 2008StatutMembreDernière intervention 9 mai 2008 9 mai 2008 à 17:17
salut à toi !
j'aurais aimé savoir comment on améliorerait ton programme qui se limite aux nombres compris entre 0 et 99 , afin d'élargir cette contrainte en -99 et +99
merci d'avance