Assembleur

etudiant -  
kilian Messages postés 8854 Statut Modérateur -
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 8854 Statut Modérateur 1 526
 
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
etudiant
 
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 8854 Statut Modérateur 1 526
 
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