Tp d'assembleur (avec emu8086)

Alundra -  
 hafida -
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 :)

5 réponses

kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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à!
2
Alundra
 
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 ?)
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > Alundra
 
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...
0
Alundra > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 :)
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > Alundra
 
;-)
0
Alundra
 
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
1
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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..?
0
Alundra
 
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 -_-)
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Ce sont des matrices à une dimension?
0
Alundra
 
Euh je ne sais pas du tout...j'ai juste l'énnoncé et jsuis censé savoir faire ca (grr c'est pas gagné lol)
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > Alundra
 
roooh :-)

Bon à priori de taille N entrée, ça signifie une matrice à une dimension...
0
Alundra > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > Alundra
 
Oui oui je vois très bien ce qu'il veut dire. Je vais manger et t'explique le truc.
0
Alundra > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
ok merci :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hafida
 
Je ne comprends pas la base de la question Qu'est-ce que chaque tâche
0