Menu

Des exercices sur l'assembleur (avec emu8086) [Fermé]

Messages postés
2
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
15 mai 2011
- - Dernière réponse :  sabir - 6 déc. 2017 à 16:37
Bonjour,
J'ai un exercice d'assembleur a faire mais je suis vraiment nul dans ce langage...
Voici l'énoncé :

É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 .

Écrire un programme assembleur qui réalise la somme de deux nombres de 8 bits signés et le résultats dans de deux cases mémoires .

Écrire un programme assembleur qui réalise le Complément à 2 d'un mémoires de 32 bits

Écrire un programme assembleur qui réalise Le nombre de 1 dans nombre à 16 bits

Est-ce que quelqu'un aurait quelques pistes pour m'aider a réaliser ce programme ?
Merci d'avance :)
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
6709
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1206
9
Merci
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.

Dire « Merci » 9

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41636 internautes nous ont dit merci ce mois-ci

bcyoucef
Messages postés
2
Date d'inscription
dimanche 8 mai 2011
Statut
Membre
Dernière intervention
15 mai 2011
-
Merci Mpmp93
s il vs plai je suis débutante en assembleur vouc pouvez m aider en ça

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.
Messages postés
1
Date d'inscription
samedi 10 mars 2012
Statut
Membre
Dernière intervention
10 mars 2012
5
Merci
?????? ????? ????? ???? ???????
; 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
pcque ax c 16bits
nicocorico
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
117 -
Oui mais dans ce cas il faut penser à initialiser AH :
xor ah,ah
mov al,a
add ax,b

ou bien
movzx ax,a
add ax,b
because ax is DW and a is DB . in assembre we can't do :
mov ax,a ;[ AX: { AH = 8bit and AL = 8bit }] = 16 bit ~~~DW
; a = 8bit ~~DB
we have to do :
mov ah,a ; ah = a = 8 BIT
ok boys
nicocorico
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
117 -
Yes we're ok, that's great lesson!
But, AH is the highest byte, and AL the smallest.
=
xor ah,ah
mov al,a
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
Messages postés
1
Date d'inscription
vendredi 7 février 2014
Statut
Membre
Dernière intervention
7 février 2014
0
Merci
c it is good