TD 2 ADOintro Corrigé - E-Eisti
ADOintro TD3 Corrigé. Assembleur 80x86. TD 3 ADOintro Corrigé. Assembleur
80x86. 1a.som_N_1ers_nbres_iteration_sans_E-S.asm. ; Somme des N 1ers ...
part of the document
TD 3 ADOintro Corrigé. Assembleur 80x86
1a.som_N_1ers_nbres_iteration_sans_E-S.asm
; Somme des N 1ers nombres par iteration sans E/S : S = somme de i (de i = 1 a N)
; 0 < N < 100
org 100h
mov al, 99 ; N dans al
mov bh, 0
mov bl, al ; (ax) -> bx
boucle: dec al
add bx, ax
cmp al, 1
jnz boucle ; Resultat S dans bx
ret
1b.som_N_1ers_nbres_formule_sans_E-S.asm
; Somme des N 1ers nombres par formule de Gauss sans E/S : S = N(N+1)/2
; 0 < N < 100
org 100h
mov ax, 99 ; N dans ax
mov bx, ax ; (ax) -> bx
inc bx
mul bx ; (ax)*(bx) -> ax
shr ax, 1 ; Division de (ax) par 2 : Resultat S dans ax
ret
2a.som_N_1ers_nbres_iteration_avec_E-S.asm
; Somme des N 1ers nombres par iteration avec E/S : S = somme de i (de i = 1 a N)
; 0 < N < 4
org 100h
mov ah, 1 ; Lecture de N au clavier
int 21h
sub al, 30h ; N dans al + conversion ascii
mov bl, al ; (al) -> bl
boucle: dec al
add bl, al
cmp al, 1
jnz boucle ; Resultat dans bl
mov ah, 0Eh ; Affichage de S a l'ecran
mov al, bl
add al, 30h ; Conversion ascii
int 10h
ret
2b.som_N_1ers_nbres_formule_avec_E-S.asm
; Somme des N 1ers nombres par formule de Gauss avec E/S : S = N(N+1)/2
; 0 < N < 4
org 100h
mov ah, 1 ; Lecture de N au clavier
int 21h
sub al, 30h ; N dans al + conversion ascii
mov bl, al ; (al) -> bl
inc bl ; (bl) = (bl)+1
mul bl ; (al)*(bl) -> al
shr al, 1 ; Division de (al) par 2 : Resultat dans al
mov ah, 0Eh ; Affichage de S a l'ecran
add al, 30h ; Conversion ascii
int 10h
ret
3a.som_N_1ers_nbres_iteration_avec_E-S.asm
; Somme des N 1ers nombres par iteration avec E/S : S = somme de i (de i = 1 a N)
; 0 < N < 10
org 100h
mov ah, 1 ; Lecture de N au clavier
int 21h
sub al, 30h ; N dans al + conversion ascii
mov bl, al ; (al) -> bl
boucle: dec al
add bl, al
cmp al, 1
jnz boucle ; Resultat S dans bl
mov al, bl
mov ah, 0
mov dl, 10
div dl ; (1er digit de S - poids fort) dans al
mov cl, ah ; Sauvegarde de S (2nd digit) dans cl
mov ah, 0Eh ; Affichage de S (1er digit) a l'ecran
add al, 30h ; Conversion ascii
int 10h
mov al, cl ; Restitution de S (2nd digit) dans al
mov ah, 0Eh ; Affichage de S (2nd digit) a l'ecran
add al, 30h ; Conversion ascii
int 10h
ret
4a.som_N_1ers_carres_iteration_sans_E-S.asm
; Somme des N 1ers nombres par iteration sans E/S : S2 = somme de (i*i) (de i = 1 a N)
; 0 < N < 10
org 100h
mov ax, 9 ; N dans al
mov bx, 0 ; resultat dans bx
boucle: push ax ; sauvegarde de i
mul ax ; i*i -> ax
add bx, ax ; (ax)+(bx) -> bx
pop ax ; restitution de i
dec ax
cmp ax, 0
jnz boucle ; resultat S2 dans bx
ret
4b.som_N_1ers_carres_formule_sans_E-S.asm
; Somme des N 1ers nombres par formule sans E/S : S2 = N(N+1)(2N+1)/6
; 0 < N < 9
org 100h
mov ax, 8 ; N dans ax
mov bx, ax ; (ax) -> bx
inc bx ; N+1 -> bx
push ax ; sauvegarde de ax
mov dl, 2
mul dl ; 2N -> ax
inc ax ; 2N+1 -> ax
mov cx, ax ; 2N+1 -> cx
pop ax ; N -> ax
mul bx ; N(N+1) -> ax
mul cx ; N(N+1)(2N+1) -> ax
mov dl, 6
div dl ; division de (ax) par 6 : Resultat S2 dans ax
ret
__________
ADOintro TD3 Corrigé. Assembleur 80x86
TD3 Corrigé. PAGE 1