Nombre parfait en assembleur

bibliomax Messages postés 30 Statut Membre -  
 le père -
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

le père
 
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