Bonjour,
J'ai un devoir en assembleur que je dois faire. Ca porte sur la manipulation de tableau et des operations. j'ai reussi a faire quelque trucs avec l'aide de quelqu'un mais j'arrive pas a tout faire et je suis pas sûre si ce que j'ai fait est correct... Si vous pouviez m'aider ça serait sympa
Je vous écris l'enoncé :
QUESTIONS :
1) Créer deux tableaux de 10 octets chacun : TAB le tableau à filtrer, TABR le tableau filtré. Initialiser TAB avec les valeurs suivantes : 0,5,7,4,3,9,15,20,50,30. Initlaiiser le tableau résultat TABR à la valeur nulle.
2) Créer la structure de boucle la plus simple permettant le parcours du tableau de l'indice 0 à l'indice 8. Ecrire ensuite les instructions permettant d'accéder la valeur du tableau d'indice 9. On utilisera le registre BX pour pointer la memoire. Faire tab[BX] pour montrer l'accès à l'élément courant du tableau
3) L'algo doit contenir :
TABR[k]=(TAB[k]+TAB[k+1])/2 pour k allant de 0 a 8
TABR[9]=TAB[9]
3a) La somme de 2 octets non signés est-elle toujours un octet non signé ? par exemple donner la valeur en octet de la somme des 2 octets suivants : 250+255
3b) Sur quel type de données intermédiaire travailler pour ne pas corrompre les resultats ?
3c) En utilisant les registres AX (AH et Al) et BX (BH et BL), réaliser le calcul sans corrompre les données
4) Donnez l'ensemble du programme.
REPONSES
1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TAB DB 0,5,7,4,3,9,15,20,50,30 NELT DB 10 TABR DB 10DUP(10)
2)
3)a) non cela tiendra sur 2 octets car on si on additionne 20 et 255 , ca ne tient plus sur un octet mais 2 octets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 MOV AX,NELT DEC AX ;on fait NELT-1 car on ve aller de lindice 0 a 8 MOV AX,CX MOV BX,0 boucle: MOV DX,TAB[BX] INC BX ; ;passer au prochaine element du tableau LOOP boucle
3b)??
3c) et 4)
JE NE CROIS PAS QUE LE PROGRAMME SOIT CORRECT
y a de la lecture!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 MOV AX,NELT DEC AX ;on fait NELT-1 car on ve aller de lindice 0 a 8 MOV AX,CX MOV BX,0 boucle : MOV DX,TAB[BX] MOV AX,TABR[BX] ADD AX,TABR[BX+1] ;addition element suivant et courant MOV RESULTAT,AX SHR AX ; division par 2 m MOV TABR[BX],AX ;afin de restituer les valeur calculé dans le nouveau tableau TABR INC BX ;passer au prochaine element du tableau LOOP boucle
merci de votre aide :o
Partager