nsi:premiere:architecture:langage_assembleur
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:premiere:architecture:langage_assembleur [2024/01/03 11:44] – goupillwiki | nsi:premiere:architecture:langage_assembleur [2024/01/04 12:19] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 87: | Ligne 87: | ||
| * dans d' | * dans d' | ||
| - | **Dans notre cas, l'UAL n'aura qu'un registre de travail.** | + | **Dans notre cas, l'UAL n'aura qu'un registre de travail.** |
| ==== Exemple ==== | ==== Exemple ==== | ||
| Ligne 124: | Ligne 124: | ||
| MOV @x // contenu de x dans travail | MOV @x // contenu de x dans travail | ||
| CMP #0 // on va comparer à 0 | CMP #0 // on va comparer à 0 | ||
| - | BGE fin // si plus grand ou égal, sauter à ligne étiquetée " | + | BGE L // si plus grand ou égal, sauter à ligne étiquetée " |
| MULT #-1 // multiplier travail par -1 | MULT #-1 // multiplier travail par -1 | ||
| STR @x // stocker travail dans x | STR @x // stocker travail dans x | ||
| Ligne 130: | Ligne 130: | ||
| </ | </ | ||
| + | Vous noterez que l'on a ajouté une marge pour permettre l' | ||
| + | Vous pouvez constater que dans ce programme, suivant la valeur de '' | ||
| + | |||
| + | <code python> | ||
| + | if x < 0: | ||
| + | x *= -1 | ||
| + | </ | ||
| + | |||
| + | Le code assembleur est toujours très long comparé à l' | ||
| ==== Littéral et adresse ==== | ==== Littéral et adresse ==== | ||
| Ligne 143: | Ligne 152: | ||
| Souvent, on ne veut pas spécifier une adresse explicitement. Il est donc rare que l'on note quelque chose comme '' | Souvent, on ne veut pas spécifier une adresse explicitement. Il est donc rare que l'on note quelque chose comme '' | ||
| - | ==== Registre de travail | + | ==== Programme et données |
| - | Le microprocesseur fictif | + | Il faut comprendre |
| - | Par exemple, la ligne Python : | + | <code:asm> |
| - | + | MOV @x | |
| - | <code:python> | + | CMP #0 |
| - | x = x + 1 | + | BGE L |
| + | MULT #-1 | ||
| + | STR @x | ||
| + | L HALT | ||
| </ | </ | ||
| - | devient | + | Ce programme comporte 6 lignes et utilise une variable '' |
| < | < | ||
| - | MOV @x | + | |
| - | ADD #1 | + | |
| - | STR @x | + | BGE L |
| + | MULT #-1 | ||
| + | STR @x | ||
| + | L | ||
| + | x DATA | ||
| </ | </ | ||
| - | Comprendre : | + | ce qui permet d'indiquer que la ligne mémoire après la ligne contenant |
| - | * charger le contenu de '' | + | |
| - | * ajouter | + | |
| - | * stocker le contenu de W dans '' | + | |
| - | + | ||
| - | Vous voyez que, sous-entendu, | + | |
| - | + | ||
| - | + | ||
| - | ===== Un exemple de langage assembleur ===== | + | |
| - | + | ||
| - | Bien que certain standard se soient mis en place, le langage assembleur est le langage d'un processeur particulier et donc, suivant les technologies mis en œuvre dans un processeur donné, l' | + | |
| - | + | ||
| - | Le langage proposé ici n'est qu'un exemple correspondant à un processeur fictif que j'ai inventé pour les besoins du cours. | + | |
| - | + | ||
| - | [[.: | + | |
nsi/premiere/architecture/langage_assembleur.1704278657.txt.gz · Dernière modification : de goupillwiki
