Td corrigé TD 2 ADOintro Corrigé - E-Eisti pdf

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