Nombre parfait en assembleur

Fermé
bibliomax Messages postés 30 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 23 janvier 2010 - 15 avril 2009 à 00:15
 le père - 15 avril 2009 à 09:54
Bonjour,
s'il vous plait jettez un coup d'oeil sur ce petit programme il parait qu'il parfaitement logique mais quand je l'execute il me donne dépassement de division


data segment
a dw 7
m1 db ' ce nombre n''est pas un nombre parfait$'
m2 db ' ce nombre est un nombre parfait$'
tab db 10 dup(?)

mov ah,0
mov al,2
int 10h
data ends
spile segment para stack
dw 256 dup(?)
bpile equ this word
spile ends
assume ds:data,cs: code ,ss:spile
code segment
mov ax,data
mov ds,ax
mov ax,spile
mov ss ,ax
mov sp,bpile
assume ds: data,cs:code

debut :

mov cx,a
dec cx
mov dx,0
bouc :cmp cx,1
je m2m
mov ax,a
div cx
dec cx
cmp dx,0
je m1m
jmp bouc

m1m : mov dx,offset m1
mov ah,09h
int 21h
jmp fin


m2m: mov dx,offset m2
mov ah,09h
int 21h


fin:
mov ah,4ch
int 21h
code ends
end debut


merci d'avance

1 réponse

Bonjour

Exécute le programme en pas, à pas tu verras bien où ça coince.
Mon assembleur est rendu assez loin, mais il ne faudrait écrire mov cx,[a] au lieu de mov cx,a et idem un peu plus loin avec le mov ax,a ?
D'autre part, pour ce que j'en comprends, ce programme teste si un nombre est premier, pas s'il est parfait
0