Questions sur l'assembleur

Fermé
klaodio81 Messages postés 255 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 9 octobre 2020 - 18 févr. 2010 à 21:24
klaodio81 Messages postés 255 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 9 octobre 2020 - 19 févr. 2010 à 15:22
Bonjour,
bonjour tt le monde, bon je debute on assembleur (sous dos 16 bits [bus d'adresse??]) et c'est pas gagné, j'ai donc trouver un cour sur le net que je suis entrain d'étudier, mais il n'explique pas tout ce cours d'ou ces quelques questions:



1/on ne peut adresser que des octets (8bits) avec les segments et les offset, mais alors comment faire pour adresser un bloc plus gros que 8 bits?, par exemple 32bits (4 octets).

2/on sait que les registres (AX,DX.....etc) font 16 bits, donc on ne peut pas y stocker une infos ou donnée qui "depasse" ces 16 bits,mais alors comment faire pour calculer des nombres gros ? comme les millions ou les millirads.c'est ici qu'interviennent les flags overflows?

3/ que veut dire vraiment les modes "protégé" et "réel"?

4/quand j'ecris un programme en assembleur,dois-je toujours veiller à ce que les tailles des instructions soient égals à 16 bits exactement ou non ?

merci pour ceux qui peuvent de me répondre.

2 réponses

Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 21:46
<3 Quelqu'un qui apprend l'assembleur...

1) Pour le début laisse tomber tu n'auras pas besoin d'adresser quoi que ce soit, ton assembleur (logiciel qui assemble l'assembleur :p) devrait gérer tout seul si tu met des indices. Genre :
variable db 100;
Je suis pas chaud, mais il me semble que tu pourras donc marquer :
mov message, 16;
(demande pour plus d'infos)

2) Ton cours date un peu :p, maintenant les pcs utilisent EAX EBX ECX EDX (même plus haut peut-être, me souviens plus), et d'autres...
AH, AL = 8 bits
AX = 16 bits
EAX = 32 bits
pour les multiplications vraiment grandes, il faut découper la multiplication en plusieurs sous-multiplications je suppose.

3) Mode protégé :
Les programmes sont stockés dans la mémoire vive par petits morceaux, "on stocke juste les quelques trucs dont on a besoin"
Mode réel :
Les programmes sont stockés en entier dans la mémoire, "on prends tout d'un coup, on bourrine la mémoire, et on y touche plus" (c'était le cas avant, plus maintenant)

4) Hum... pas compris. Il y a des instructions de taille différente, ca se fait tout seul U.u
Faut juste faire attention à bien utiliser les bonnes instructions avec les bonnes opérandes (taille)

Voilà, j'espère ne pas trop t'avoir raconté n'importe quoi, mais y'a des chances que si, puisque je perd de plus en plus la mémoire niveau assembleur x).

Si tu as besoin d'un assembleur (le logiciel), je peux te filer le mien qui est nickel a mon humble avis. Quand j'ai commencé l'assembleur, j'avais limite l'impression que c'était tabou sur internet tellement rien n'était expliqué.
0
klaodio81 Messages postés 255 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 9 octobre 2020 20
19 févr. 2010 à 15:22
merci mec, je prend volentier ton compilateur assembleur.......histoir de me familiariser un peu.
donc:
1/je laisse le compilateur se débrouiller, en me contentant de declarer (comme pascal quoi ).

2/ca c'est aussi compris, fait toujour donc faire attention à ne pas déborder les registres, sinon on découpe les infos qu'on veut stocker (sur les registres).......(là c'est pas comme pascal!).

3/j'avais une autre "intérpretation" mais cela je vais aussi l'avaler.

4/c'est en faite comme le 2ém point:" il faut que les instructions (ou autre chose) soient de meme taille que le registre......enfin je pense .

donc voilan enore merci et à plus.
0