Assembleur

Fermé
etudiant - 29 janv. 2008 à 19:04
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 29 janv. 2008 à 19:42
Bonjour,
j'ai un exercise en assembleur a faire
faire le transfert des elements d'un tableau constitué de 5 elements codés sur 32bit chacun vers une zone memoire située entre les adresses de deplacement 1000h et 1013h du segment de donées courant
voila
les problemes que j'ai rencontré c'est
c'est quoi le segment de donnée courant ??? c'est ds??
pour le premier transfert il faut faire mov ds:[1000h] tab[0] ou mov [1000h] tab[0] ou quelque chose d'autre??
si quelqu'un a lme temps de le faire pour moi merci
merci bien pour vos future questions

3 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 janv. 2008 à 19:05
c'est quoi le segment de donnée courant ??? c'est ds??

Tout à fait!

pour le premier transfert il faut faire mov ds:[1000h] tab[0] ou mov [1000h] tab[0] ou quelque chose d'autre??

C'est une notion d'assembleur basique, je pense que je te rends service en te renvoyant vers ton cours. tab[1] c'est une manière de prendre la case 1 du tableau tab en C.
En assembleur, on prend une adresse, à laquelle on ajoute un déplacement.


si quelqu'un a lme temps de le faire pour moi merci

:-DD
0
je pense c'est la meme chose soit tap[0] ou tab pour lire la prmiere valeur en assembleur comme en c
un peu d'aide sil vous plai
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 janv. 2008 à 19:42
Je vais te guider un peu.
Sais tu comment un tableau en C est organisé dans la mémoire?

Imaginons deux tableaux:
char tabc[3];
int tabi[3];

D'abord, en règle générale, une variable type char prend un octet et une variable de type int prend 4 octets (32 bits).

tabc est un tableau de 3 char, ce qui donne 3 octets.
tabi est un tableau de 3 int, ce qui donne 3 * 4 = 12 octets.

Pour aller à la case 0 de tabc, on prend l'adresse tabc. Pour aller à la case 1 de tabc, on prend l'adresse tabc + 1.
Tu vois un tableau est une plage d'adresse ou l'on incrémente l'adresse de n octets pour avoir l'adresse de la case suivante, sachant que n est la taille d'une case.

Avec un entier c'est la même chose qu'un char, sauf que l'on incrémente de 4 pour avoir l'adresse de la case suivante. Tu saisis?
0