A voir également:
- Programmation assembleur 8086 exercice corrigé
- Somme de deux nombres en assembleur 8086 - Meilleures réponses
- Assembleur 8086 exercices corrigés - Meilleures réponses
- Des exercices sur l'assembleur (avec emu8086) - Forum - Programmation
- Exercice sur l'assembleur (avec emu8086) - Forum - Programmation
- Cours assembleur 8086 ✓ - Forum - Programmation
- Exercice en assembleur 8086 par logiciel emu8086 ✓ - Forum - Programmation
- Exercices sur emmulateur 8086 ✓ - Forum - Programmation
3 réponses
mpmp93
- Messages postés
- 6648
- Date d'inscription
- mercredi 13 avril 2011
- Statut
- Membre
- Dernière intervention
- 28 septembre 2015
Bonjour,
Écrire un programme assembleur qui réalise la somme de deux nombres de 8 bits non signés et le résultats dans de deux cases mémoires .
deux cases mémoire?
Voici une soluce qui admet que les deux valeurs sont sur la pile de données
pop ax
pop bx
add ax,bx
push ax
le résultat est déposé sur la pile.
Écrire un programme assembleur qui réalise la somme de deux nombres de 8 bits non signés et le résultats dans de deux cases mémoires .
deux cases mémoire?
Voici une soluce qui admet que les deux valeurs sont sur la pile de données
pop ax
pop bx
add ax,bx
push ax
le résultat est déposé sur la pile.
Utilisateur anonyme
?????? ????? ????? ???? ???????
; ecrire un programme en assembleur 8086
;qui calcule la somme de deux nombre A et B.
; Dans un premier temps, vous supposez que ces
; deux valeurs sont initialisées dans votre
;programme
data segment
a db 10 ;a=10 db:sur un octet
b db 02 ;b=02 db:sur un octet
result dw ? ;reserve 2 octet pour le result
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
; add your code here
et1:
mov ax, a
add ax,b
mov result,ax
;retour au DOS
fin :
mov ax, 4c00h
int 21h
code ends
end start
; ecrire un programme en assembleur 8086
;qui calcule la somme de deux nombre A et B.
; Dans un premier temps, vous supposez que ces
; deux valeurs sont initialisées dans votre
;programme
data segment
a db 10 ;a=10 db:sur un octet
b db 02 ;b=02 db:sur un octet
result dw ? ;reserve 2 octet pour le result
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
; add your code here
et1:
mov ax, a
add ax,b
mov result,ax
;retour au DOS
fin :
mov ax, 4c00h
int 21h
code ends
end start
Abdou Dz
voici la solution en emul8086:
org 100h
jmp start ; pour demarrer la 1ere instruction
a dw 10,6,6dup(0),'$'
b dw 10,6,6dup(0),'$'
s dw 10,6dup(0),'$'
donneza db 'donner A: (si A<10 mettez un zero ex:03 pas 3) $'
donnezb db 10,13,'donner B: (si B<10 mettez un zero ex:03 pas 3)$'
somme db 10,13,'a+b = $'
;------------------------fin des declarations
start: lea dx,donneza ;afficher le message "donnez A:"
mov ah,09h
int 21h
lea dx,a ;lecture de A
mov ah,0ah
int 21h
mov bx,a+2;bh<-a
lea dx,donnezb ;afficher le message "donnez B:"
mov ah,09h
int 21h
lea dx,b ;lecture de B
mov ah,0ah
int 21h
mov cx,b+2
add cx,bx; ch=a+b
sub ch,30h;pour avoir le code ascii de chaque chiffre
sub cl,30h;
mov s,cx
lea dx,somme ;afficher somme
mov ah,09h
int 21h
lea dx,s ;afficher le contenu qui est la somme a+b
mov ah,09h
int 21h
int 20h
org 100h
jmp start ; pour demarrer la 1ere instruction
a dw 10,6,6dup(0),'$'
b dw 10,6,6dup(0),'$'
s dw 10,6dup(0),'$'
donneza db 'donner A: (si A<10 mettez un zero ex:03 pas 3) $'
donnezb db 10,13,'donner B: (si B<10 mettez un zero ex:03 pas 3)$'
somme db 10,13,'a+b = $'
;------------------------fin des declarations
start: lea dx,donneza ;afficher le message "donnez A:"
mov ah,09h
int 21h
lea dx,a ;lecture de A
mov ah,0ah
int 21h
mov bx,a+2;bh<-a
lea dx,donnezb ;afficher le message "donnez B:"
mov ah,09h
int 21h
lea dx,b ;lecture de B
mov ah,0ah
int 21h
mov cx,b+2
add cx,bx; ch=a+b
sub ch,30h;pour avoir le code ascii de chaque chiffre
sub cl,30h;
mov s,cx
lea dx,somme ;afficher somme
mov ah,09h
int 21h
lea dx,s ;afficher le contenu qui est la somme a+b
mov ah,09h
int 21h
int 20h
Exo 2. Écrire un programme en assembleur 8086 qui calcule la somme de deux nombre A et B. Dans un premier temps, vous supposez que ces deux valeurs sont initialisées dans votre programme. Ensuite, vous devez les avoir via le clavier. Qu'elle est la limitation de votre programme ?
Exo 3. Écrire un programme en assembleur 8086 qui calcule le maximum de deux nombres A et B. Pour ces deux valeurs, procédez comme dans l'exercice 2.
Exo 4. Écrire un programme en assembleur 8086 qui introduit une chaîne de caractères via le clavier et l'affiche à l'envers.
Exo 5. Écrire un programme en assembleur 8086 qui introduit une chaîne de caractères via le clavier et affiche en résultat le nombre de voyelles qu'elle contient.