Vous êtes sur la page 1sur 7

Réaliser par :Megder Ayman

Réseaux et Systèmes dse Télécommunications


TP1 : FAMILIARISATION AVEC L’ASSMBLEUR DU MICROPROCESSEUR
8086

TRAVAIL 1:

1- Arrêter l’exécution sur l’instruction mov ah, 4ch et donner :


La valeur du segment data (registre DS) : 0710
La valeur du registre BL: 0B
L’offset compte : 0002H
L’adresse physique DS : compte : 07100+00002=07102h

Verification qu’il contient la valeur de registre BL nombre des 0B en decimal qui egale
11:

verification de changement du programme avec changement du compteur du boucle:


TRAVAIL2:

compléter le programme:
Title note elevee
;========================================================
= data segment
notes DB 18,06,19,11,08
plusg DB ?
data ends
;========================================================
= code segment
start:
assume cs: code, d:data ; generation des adresse du code et data segment
mov ax,data; initialiser le registre DS pour récupérer
mov ds,ax;l'adresse de segment du donnee
mov cx,5;initialiser le compteur de boucle a 5
xor al,al;mettre à zéro le registre al
mov bx,offset notes ;bx pointe vers les donnes notes
encore:
cmp al,[bx]
jg prochain
mov al,[bx]

prochain:
inc bx
loop encore

mov plusg,al
=====================================;
mov ax,4ch
int 21h
code ends
end start

Arrêter l’exécution sur l’instruction mov ax, 4ch et donner;

La valeur du segment data : 0710 H


la valeur de Al en hexadecimal est : 4C H
l’offset est de est : 00005H
TRAVAIL 3
1. Ecrire un programme en assembleur qui permet de faire la somme de deux
vecteurs vec1 et vec2 de 4 composantes (ces composantes ont une taille d’un octet).
Le résultat sera stocké dans le vecteur vec3. Tester et vérifier le fonctionnement de
ce programme en inspectant les différents registres ainsi que et les cases mémoire
sollicitées.

Title note elevee

;=========================================================
data segment
V1 DB 0,06,5,11
V2 DB 18,06,5,11
V3 DB ?
data ends
;=========================================================
code segment
start:

mov ax,data; initialiser le registre DS pour recuperer


mov ds,ax;l'adresse de segment du donnee
mov cx,4;initialiser le compteur de boucle a 5
mov bx,0
addition:

mov ax,0

mov al,V1[bx]

add al,V2[bx]
mov V3[bx],al
inc bx
dec cx
loop addition

=====================================;
mov ah,9h

int 21h

2. Ecrire un programme qui permet de faire la moyenne de 9 nombres (9 octets)


signés contenu dans une variable tableau nommée sign_dat. La moyenne
(mot) qui sera stockée dans variable, moyenne, est la partie entière de la division
signée de la somme de ces nombres sur 9. Le reste (mot) de cette division est
stocké dans une variable, reste. Tester et vérifier le fonctionnement de ce
programme en inspectant les différents registres ainsi que et les cases mémoire
sollicitées.
org 100h

signdat Db 1,2,3,4,5,6,7,8,10
moyenne Dw ?
rest Dw ?

mov cx,8
mov bx,0
mov ax,0
mov al,signdat[bx]
addition:
inc bx
add al,signdat[bx]
loop addition
mov bx,9
div bx
mov moyenne,ax
mov rest,dx

;affichage de la moyenne en code ascii


mov dx,offset msg1
mov ah,9
int 21h
mov dx,moyenne
mov ah ,2
int 21h

;affichage en code ascii du rest


mov dx,offset msg2
mov ah,9
int 21h
mov dx,rest
mov ah ,2
int 21h

Vous aimerez peut-être aussi