0% ont trouvé ce document utile (0 vote)
972 vues11 pages

Exercices Assembleur

Ce document contient la description et le code source de 10 exercices en assembleur portant sur des opérations et manipulations basiques de chaînes de caractères, de nombres et de registres.

Transféré par

jalal zerroudi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
972 vues11 pages

Exercices Assembleur

Ce document contient la description et le code source de 10 exercices en assembleur portant sur des opérations et manipulations basiques de chaînes de caractères, de nombres et de registres.

Transféré par

jalal zerroudi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exercices et Corrections en Assembleur

Table des Matières

1. Exercice 1 : Addition et affichage en ASCII

2. Exercice 2 : Affichage de l'alphabet

3. Exercice 3 : Échange de registres

4. Exercice 4 : Conversion de minuscules en majuscules

5. Exercice 5 : Copie de chaîne

6. Exercice 6 : Inversion de chaîne avec la pile

7. Exercice 7 : Affichage de l'alphabet en majuscules

8. Exercice 8 : Produit de deux nombres

9. Exercice 9 : Affichage de l'alphabet de 'a' à 'z'

10. Exercice 10 : Comptage des caractères 'a'


Exercice 1 : Addition et affichage en ASCII
Code :
section .text
global _start

_start:
mov ax, 5
mov bx, 3
add ax, bx
add ax, 48
mov dx, ax

mov ah, 2
int 21h

mov ah, 4Ch


int 21h

Correction :
Aucune correction nécessaire.

Explication :
Ce programme additionne les valeurs 5 et 3,
ajoute 48 pour convertir le résultat en caractère ASCII, puis a
Exercice 2 : Affichage de l'alphabet
Code :
section .text
global _start

_start:
mov dl, 'a'

boucle:
mov ah, 2
int 21h inc
dl cmp dl,
'z'+1 jz fin
jmp boucle

fin:
mov ah, 4Ch
int 21h

Correction :
Aucune correction nécessaire.

Explication :
Ce programme affiche les caractères de 'a' à 'z'
en utilisant une boucle et se termine après l'affichage de 'z
Exercice 3 : Échange de registres - Méthode 1 : Utilisation de la pile
Code :
section .text
global _start

_start:
mov ax, 100
mov bx, 200
push ax push
bx pop ax
pop bx mov
ah, 4Ch int
21h

Explication :

Cette méthode montre comment échanger les valeurs de deux registres en utilisant la pile.
Exercice 3 : Échange de registres - Méthode 2 : Utilisation des registres
Code :
section .text
global _start

_start:
mov ax, 100
mov bx, 200
mov cx, bx
mov bx, ax
mov ax, cx
mov ah, 4Ch
int 21h

Correction :
Aucune correction nécessaire.

Explication :
Cette méthode montre comment échanger les valeurs de deux registres en utilisant un registre intermédiai
Exercice 4 : Conversion de minuscules en majuscules
Code :
assume ds:data

data segment
miniscul db 'abcd2$'
data ends

code segment
start:
mov ax, data mov
ds, ax mov si, offset
miniscul

transform:
mov al, [si]
cmp al, '$'
je fin sub
al, 32 mov
dl, al mov
ah, 2 int 21h
inc si jmp
transform

fin:
mov ah, 4Ch
int 21h

code ends
end start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme convertit les caractères en minuscules d'une chaîne en majuscules et les affiche jusqu'à
ce
Exercice 5 : Copie de chaîne
Code :
assume ds:data

data segment
source db 'abc&'
destination db '?'
data ends

code segment
start:
mov ax, data mov ds,
ax mov si, offset source
mov di, offset destination
mov cl, 0

boucle: cmp
[si], '&' je
fin mov al,
[si] mov
[di], al inc
si inc di
inc cl jmp
boucle

fin:
mov ah, 4Ch
int 21h

code ends
end start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme copie les caractères de la chaîne source vers la chaîne destination jusqu'à ce qu'il
rencontr
Exercice 6 : Inversion de chaîne avec la pile
Code : assume

ds:data

data segment
chaine db 'abc$'
data ends

code segment
start:
mov ax, data mov
ds, ax mov cl, 0
mov si, offset chaine

empile: mov
ax, [si] je
depile push
ax inc cl
inc si jmp
empile

depile:
pop ax mov
dx, ax mov
ah, 2 int
21h dec cl
cmp cl, 0
je fin jmp
depile

fin:
mov ah, 4Ch
int 21h

code ends
end start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme empile les caractères de la chaîne source puis les dépile et les affiche pour inverser l'ordre
Exercice 7 : Affichage de l'alphabet en majuscules
Code :
section .text
global _start

_start:
mov dl, 'A' call
affiche_alphabt mov
ah, 4Ch int 21h

affiche_alphabt proc
affiche_caracter:
cmp dl, 'Z'+1 je fin
mov ah, 2 int 21h
inc dl jmp
affiche_caracter

fin: ret
affiche_alphabt endp

code ends
end _start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme affiche les lettres de l'alphabet de 'A' à 'Z' en appelant une procédure qui parcourt les
carac
Exercice 8 : Produit de deux nombres
Code :
assume ds:data

data segment
n1 dw 25h
n2 dw 4
prod dw ? data
ends

code segment
main:
mov ax, data
mov ds, ax
mov ax, n1
mov cx, n2
mov dx, 0

boucle:
add dx, ax
loop boucle
mov prod, dx

mov ah, 4Ch


int 21h

code ends
end main

Correction :
Aucune correction nécessaire.

Explication :
Ce programme utilise une boucle pour multiplier deux nombres et stocke le résultat dans 'prod'.
Exercice 9 : Affichage de l'alphabet de 'a' à 'z'
Code : assume

ds:data

data segment
caractere db 'a' data
ends

code segment
start:
mov ax, data mov
ds, ax mov al,
caractere call
affiche_alphabet mov
ah, 4Ch int 21h

affiche_alphabet proc
push bp mov bp,
sp pusha sub
sp, 10

affiche: cmp
al, 'z'+1 je
fin mov dl,
al mov ah, 2
int 21h inc
al jmp
affiche

fin: add sp, 10

popa pop bp
ret affiche_alphabet
endp

code ends
end start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme affiche les lettres de l'alphabet de 'a' à 'z' en appelant une procédure.
Exercice 10 : Comptage des caractères 'a'
Code : assume

ds:data

data segment
chaine db 'abc$'
caractere db 'a'
data ends

code segment
start:
mov ax, data mov
ds, ax mov si, offset
chaine mov cl, 0

compare:
mov al, [si]
cmp al, '$' je
affiche cmp al,
caractere je
compte

compte: inc
cl inc si
jmp compare

affiche:
mov dl, cl
add dl, 48
mov ah, 2
int 21h mov
ah, 4Ch int
21h

code ends
end start

Correction :
Aucune correction nécessaire.

Explication :
Ce programme compte le nombre de caractères 'a' dans une chaîne et affiche ce nombre.

Vous aimerez peut-être aussi