Assembleur

Fermé
yan486 Messages postés 1 Date d'inscription vendredi 26 août 2011 Statut Membre Dernière intervention 26 août 2011 - 26 août 2011 à 00:27
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 26 août 2011 à 09:06
Bonsoir, que faut-il avoir comme connaissances au préalable avant de se lancer dans la programmation en assembleur ?
Merci de vos réponses.



2 réponses

nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
26 août 2011 à 06:57
Hé bien c'est en pratiquant qu'on apprend, donc je dirais : aucunes !
Ma réponse peut paraitre très expéditive, mais je trouve pourtant que c'est la plus juste.
En fait en assembleur il y a peu de connaissances préalables à avoir, car la syntaxe est très simple, il n'y a pas de bibliothèques à maitriser, ni d'environnement complexe..
Quelques notions de traitement binaire, sur les opérateurs logiques (not, or, and, xor), sur les instructions de base, le registre de flags permettant le traitement conditionnel, et c'est parti !
Et un bon dictionnaire d'instructions se révèle très utile.

Le chêne aussi était un gland, avant d'être un chêne
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
Modifié par mpmp93 le 26/08/2011 à 09:07
Bonjour,

Il y a plusieurs types d'assembleurs:
- les assembleurs simples du genre de ceux qu'on trouve sur les "anciens" processeurs 8/16 bits: 8080, Z80, 8086 à 80386, 68xx, etc... Ils concernent des registres bien cadrés, avec des instruction simples. Ils sont toujours utilisés, en particulier pour les micro-contrôleurs (série 68HCxx...).
- les assembleurs "complexes" car utilisés dans des environnements particuliers: PENTIUM et consorts... Pour ceux-ci, le PENTIUM par exemple, on retrouve la couche des 80386 + des instructions spécifiques à ce type de processeurs.

Je conseille de commencer par des programmes très simples, consistant en des opérations d'empilage, dépilage, addition, décalage, opérations logiques, etc...

Tous les processeurs sont construits selon la même logique:
- des registres 8 et/ou 16 et/ou 32 et/ou 64 bits.
- une UAL (Unité Arithmétique et Logique)
- un jeu d'instructions

Pour programmer en assembleur, il faut se référer au manuel du jeu d'instructions:
- instructions de manipulations de registres, exemple

ax pop

dépile le registre AX sur processeur 80386 (assembleur FORTH)

- instructions de saut et branchements
- instructions spécifiques:
* gestion des interruptions matérielles et logicielles...

L'assembleur c'est un jargon dans un univers au départ peu familier qui peut dérouter. Il faut bien suivre les explications des manuels et comprendre un minimum la manipulation des données binaires. Exemple, une multiplication par deux:

code 2*
ax pop
ax sal
ax push end-code

on récupère la valeur sur la pile que l'on met dans le registre ax (16 bits)
on décale de 1 rang vers la gauche les bits de ax, exemple ...0101 devient ...1010
on remet sur la pile le résultat.

Voir ici le jeu d'instructions des processeurs x86:
https://fr.wikipedia.org/wiki/Jeu_d%27instruction_x86

L'assembleur est une excellente école de rigueur. C'est aussi le moyen de faire faire absolument tout à un processeur...

A+
0