Les Allergies
Alimentaires
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 

Tp d'assembleur (avec emu8086) »

15 réponses
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à!
kilian- 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...
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 :)
kilian- 5 juin 2008 à 22:44
;-)
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 -_-)
Ajouter un commentaire
Réponse
+0
moins plus
Ce sont des matrices à une dimension?
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
kilian- 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.
Alundra - 5 juin 2008 à 20:37
ok merci :)
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.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?