Académique Documents
Professionnel Documents
Culture Documents
Page 1/3
ALORS ecrire ('parfait')
SINON ecrire('non parfait')
FINSI
- Traduire l’algorithme ci-dessus en Assembleur ?
code segment
assume cs:code, ds:donnee
debut :
mov ax, donnee
mov ds, ax
repeat:
mov ax, nb
div bh ;division 16bit/8bits résultat dans AL, le reste dans AH
;si reste =0 ajouter bh aux disviseurs (CL)
cmp ah, 0 ;faire le test du reste de la division ah
jne nondiv ;se branher vers etiq nondiv pour un non diviseur
add cl, bh ;si reste=0 ajouter nbre dans bh au diviseur dans CL
nondiv: inc bh ;incrémenter le diviseur
cmp bh, 27 ;comparer diviseur avec nb-1 pour éviter de calculer
;nb div 2 et faire les choses simple
jne repeat ;si bh<>27 aller vers début boucle repeat
donnee segment
nb dw 28
msg1 db "Nombre Parfait", '$'
msg2 db "Nombre non Parfait", '$'
donnee ends
end debut
Exercice n°3 : (05pts)
Ecrire le code (uniquement les suites d’instructions) Assembleur pour faire la somme de dix (10) éléments d’un
tableau. Le premier étant rangé à la case mémoire ayant l’adresse "0F68H" ? (chaque nombre est sur un octet et la
somme peut dépassée 255)
repeat:
mov dl, [bx] ;pour lire 1 seul octet de la mémoire
add ax, dx ;DH étant à zéro faire la somme de 2 registre 16bits
inc bx ;incrémenter BX pour lire l’elt suivant du tableau
loop repeat
Page 3/3