Posez votre question Signaler

Tp d'assembleur (avec emu8086)

Alundra - Dernière réponse le 27 mars 2009 à 22:22
Bonjour,
J'ai un exercice d'assembleur a faire mais je suis vraiment nul dans ce langage...
Voici l'énoncé :
Ecrire un programme assembleur qui realise la somme de deux matrices A et B de taille N entrées par l'utilisateur et sauvegarde le resultat dans une matrice C qui est affichée a l'utilisateur.
Est-ce que quelqu'un aurait quelques pistes pour m'aider a realiser ce programme ?
Merci d'avance :)
Lire la suite 
Réponse
+1
moins plus
sniff jdois rendre ca dans 40 minutes !!!
J'aime vraiment pas l'assembleur lol

Quelqu'un peu pas m'aider un peu ??

Merci d'avance
Ajouter un commentaire
Réponse
+1
moins plus
Alors d'abord comment on représente une matrice à une dimension.
En voici une:
[0, 1, 2, 5]

Sous 8086 les entiers sont codés sur 16 bits puisque les registres ont cette taille.
Chacun de ces nombres sera codé sur deux octets donc. Si le premier élément est à l'adresse 0, alors le second est à l'adresse 0 + 2 (car 16 bits ça fait deux octets). Le troisième élément est à 0 + 4 etc...

adresse i + 6 |  5  |
adresse i + 4 |  2  |
adresse i + 2 |  1  |
adresse i     |  0  |

Donc mettons que l'adresse de la matrice (donc l'adresse du premier élément soit dans bx), si tu veux mettre la valeur du deuxième élément dans ax, tu fais comme ça:
mov ax, [bx + 2]

En gros là règle c'est: pour accéder à l'élément i, je prends son adresse de base et j'y ajoute i * 2, sachant que l'indice de la matrice i commence à 0 dans cet exemple:
adresse_element[i] = adresse_base + (i * 2)

Maintenant prenont une matrice à 3 dimensions:
[0, 1]
[2, 3]
[4, 5]

Impossible de représenter ça réellement en mémoire, puisqu'elle se présente comme une longue ligne de case à un seul étage.
Alors du coup on transforme notre matrice 3 dimensions en une matrice 1 dimension. Comment me diras-tu? Eh bien on fait comme si les lignes qui suivent la première étaient mises à sa suite.
Tout bonnement ça donne ça:
[0, 1, 2, 3, 4, 5]

Donc si l'indice de la ligne est i, que l'indice de la colonne est j, et que ces indices commencent à 0, et que le nombre d'éléments dans une ligne est de N, alors l'adresse d'un élement de ta matrice est:
adresse_element[i][j] = adresse_base + (i * N * 2) + (j * 2)

Valà!
Alundra- 5 juin 2008 à 22:25
Hum...ok je comprend le principe...

Bon je sais pas encore comment je vais coder (je sais je suis assez désespérante lol) mais c'est deja un peu plus clair...

Par contre, comment on fais pour demander que l'utilisateur entre les valeurs des tableaux ? (faut bien le faire, non ?)
Répondre
kilian 8898Messages postés vendredi 19 septembre 2003Date d'inscription ModérateurStatut 1 août 2014 Dernière intervention - 5 juin 2008 à 22:28
Ben par contre faut voir ça avec emu8086, j'ai jamais manipulé. Ca doit utiliser des interruptions clavier spécifiques...

Sinon ya toujours moyen de déclarer des constantes, deux longs tableaux...
Répondre
Alundra- 5 juin 2008 à 22:31
Ok...je vais chercher un peu mais bon vu le peu de temps qu'il me reste je crois que c foutu pour cet exo.

Enfin bon tant pis, l'assembleur c pas mon truc

Merci beaucoup a toi au moins j'aurais compris quelque chose :)
Répondre
kilian 8898Messages postés vendredi 19 septembre 2003Date d'inscription ModérateurStatut 1 août 2014 Dernière intervention - 5 juin 2008 à 22:44
;-)
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
T'as pas une petite idée pour commencer? ;-)
Par exemple qu'est ce qui te fait coincer? La représentation des matrices? L'affichage ou..?
Alundra- 5 juin 2008 à 19:56
L'affichage ca ira mais c'est pour les matrices que je ne sais pas du tout comment on fais (en fait je comprend pas du tout comment est strucuré l'assembleur malgré les cours -_-)
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Ce sont des matrices à une dimension?
Alundra- 5 juin 2008 à 20:21
Euh je ne sais pas du tout...j'ai juste l'énnoncé et jsuis censé savoir faire ca (grr c'est pas gagné lol)
Répondre
kilian 8898Messages postés vendredi 19 septembre 2003Date d'inscription ModérateurStatut 1 août 2014 Dernière intervention - 5 juin 2008 à 20:25
roooh :-)

Bon à priori de taille N entrée, ça signifie une matrice à une dimension...
Répondre
Alundra- 5 juin 2008 à 20:35
Alors selon les explications que jai pu soutiré au prof c a deux dimensions que l'on doit transformer en une dimension....en francais je sais pas ce que ca veut dire lol
Répondre
kilian 8898Messages postés vendredi 19 septembre 2003Date d'inscription ModérateurStatut 1 août 2014 Dernière intervention - 5 juin 2008 à 20:36
Oui oui je vois très bien ce qu'il veut dire. Je vais manger et t'explique le truc.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Je ne comprends pas la base de la question Qu'est-ce que chaque tâche
Ajouter un commentaire
Ce document intitulé «  tp d'assembleur (avec emu8086)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.