0% ont trouvé ce document utile (0 vote)
54 vues22 pages

Programmation en Langage D'Assemblage: Cours N°2: Premiers Pas

Transféré par

Assir El Djazairi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
54 vues22 pages

Programmation en Langage D'Assemblage: Cours N°2: Premiers Pas

Transféré par

Assir El Djazairi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

PROGRAMMATION EN

LANGAGE D’ASSEMBLAGE

[Link]

Cours n°2 : Premiers pas


Le Fil_Rouge….
Le projet Fil_Rouge est constitué
de
 4 fichiers en langage
d’assemblage
 STM32F10X.s
 [Link]
 [Link]
 Fil_Rouge.asm
 1 fichier objet.
 serial.o
Que fait Fil_Rouge ?
Il ne suffit  Ce programme calcule le
pas d’être moyenne de deux nombres et
génial pour
être un affiche le résultat…
génie…
Facile  En langage C :
pour
moi… printf(%d\n, (ValUn+Valdeux)/2);
 En langage d’assemblage :
listing de deux pages pleines
 Sauf qu’en LA on fait tout !
 De l’initialisation du processeur …
 …à la gestion des flux sortant pour
l’affichage.
Premier constat...
 Un programme n’est pas un
fichier….(cela pourrait l’être…)
 Adjonction d’un ficher objet : serial.o
= bibliothèque qui permet
l’utilisation d’une des
communications série du STM32
 STM32F10x.s : fichier d’initialisation
du processeur….écrit en assembleur
par Keil et repris par l’équipe
pédagogique INSA
 Autres fichiers : écrit en assembleur
par le programmeur
Chaine de développement Vous pouvez
parler un peu
moins fort…
Je bosse
moi !
•Traduit le listing en langage machine…
• Les fichiers « objet » construit sur des
adresses relatives

•Réunit les différents objets…


• Les adresses deviennent absolues
• Les « liens » sont faits

•Charge le fichier éxécutable en mémoire


• Protocole (physique et logiciel) de comunication
Le fichier Fil_Rouge.asm
Est-ce aussi incompréhensible ? Pourquoi ?
 Un fichier en LA : suite
PROGRAM LIMITE
REAL U1, U2, U3, E
J’ai écrit de caractères
INTEGER I, R = fichier
cette ligne
rien que source
PRINT*, 'Limite
1)'
 de peut être
la suite U(n+1) écrit
= U(n) - U(n-

pour TOI… avec n’importe


PRINT*, 'U(1)
READ*, U1, U2
et U(2) ?' quel
éditeur….
PRINT*, 'Rang maximum'
READ*, R
PRINT*, 'Precision'
Avantage du syntaxique
READ*, E

I=3
  des parties non
WHILE ((I .LE. R) .AND. (ABS(U2-U1) .GT. E)) DO
U3 = (U2-U1)/(U2+U1)
C’est la ligne homogènes U1 = U2
70 sur ton U2 = U3
listing
 Langage peu
ENDWHILE
I=I+1

compréhensible en
IF (ABS(U2-U1) .LE. E) THEN
PRINT*, 'U(inf) = ', U2
première lecture …
ELSE
PRINT*, 'Desole'
ENDIF
STOP
La ligne type
Symbole :
 Une ligne type estVariable,
constituée de 4
Constante,
LABEL5 ADDS R2,R11,R3
Procédure, Section,
champs
Etiquette,….
LABEL5 est une étiquette
Elle qui vaut (par exemple)
0x08000044

 Le champs [Etiquette]
 Les crochets [ ] : Le champs est facultatif

 Toujours sur la première colonne de la ligne

 C’est symbole (choisi par l’utilisateur)

 L’étiquette repère une adresse : c’est un point

de rendez-vous (code)
 Etiquette sur ligne vide : repère la ligne suivante
La ligne type
 Une ligne type est constituée de 4
champs

 Le champs mnémonique
 Mnémonique = instruction en elle-même : ce que

doit faire le processeur à ce cycle d’horloge.


 Ici B c’est à dire Branch

 Ensemble des mnémoniques = jeu d’instructions

 Champs obligatoire (sauf si c’est une seule ligne

de commentaires)
La ligne type
 Une ligne type
Sans est: NOP
opérande constituée de 4
Un opérande : BX LR
champsDeux opérandes MOV R1,#2
Trois opérandes ADDS
R2,R11,R3

 Le champs Opérandes
 De 0 à 3 (exceptionnellement 4) opérandes

possibles – séparés par des virgules


 Le nombre dépend de l’instruction mais aussi

des choix du programmeur et des possibilités de


codage….
 Opérandes = matériel sur lequel travaille le

processeur.
Je passe beaucoup
La ligne type
de temps à
commenter mon
travail …car les
 gensligne
Une qui me relisent
type est constituéeIntérêt
de 4de
n’ont pas mon génie
champs L’éditeur
! syntaxique

 Le champs Commentairesssssss
 Listings durs à lire : les commantaires sont

salvateurs
 Débutent n’importe où et après un ;

 Finissent avec la ligne

 Peuvent constituer une ligne entière

 Abondant et intelligents – pas une redite du code


Les instructions
 Un programme = une suite d’instructions…
 Que peut – on faire ?
 Peu de chose à chaque cycle
 1 instruction = 1 opération rudimentaire

 Avec quoi ou Sur quoi travaille l’instruction


 Uniquement des octets (8), ½ mots (16) ou mots (32)
 Représente des entiers (signée ou non) ou des
caractères.
 Si on veut faire + compliqué
 Combinaison d’instructions (structure algo par ex.)
 Utilisation de bibliothèque (travail en flottant par ex.)
Exécution d’une instruction
 Pipeline en 3 étapes
1. Récupération
 Lecture en mémoire et incrémentation du
pointeur d’instructions
2. Décodage de l’instruction
3. Exécution
 Réalise l’opération demandé
 Peut mettre à jour les fanions dans le
registre d’état xPSR
Accès à la mémoire
ATTENTIO
 L’architecture duNCortex est de type
Load/Store  seules
L’ALU nequelques instructions
spécialisées ont accès à la mémoire.
travaille
 QUE sur
L’espace mémoire est de 4Go.
du 32 bits
 Adresses possibles : 0x00000000 à 0xFFFFFFFF
Une adresse correspond à un octet
 Le processeur peut charger ou affecter
 Des octets : contenu d’1 adresse
 Des ½ mots : contenu de 2 adresses consécutives
 Des mots : contenu de 4 adresses consécutives
Organisation mémoire
 De type little-endian par défaut
(configurable)

Choix de
représentation

@ croissantes vers le
haut
Contenu en héxa
(largeur fixe 1 digit héxa = 4bits)
Registre :
Récupération
 Espace mémoire
Avec :
dont le contenu

MOV
Une adresse = 1 quantité 8 bits
affecte directement
 Une R1,#0XAA
instruction = 1 quantité 16 bits (jeu
la fonctionnement
Je mets
Thumb) ou170 dans(jeu du
32 bits Thumb-2)
processeur
le registre R1
 Machine Harvard : code stockée dans la zone
adresse : 0x00000000  àProcesseur
0x1FFFFFFF 32
bits : tous les
 Le pointeur d’instruction (PC) est un registre
registres sont 32
qui contient l’adresse oùbitsse trouve
l’instruction courante.
 Une fois l’instruction lue, PC est incrémenté
de 2 (Thumb) ou 4 (Thumb-2)
 PC est aussi appelé R15
Exécution
Avec :
 Le processeur effectue l’instruction :
MOVS
MOV R1,#0XAA
R1,#0XAA
  R1 sera affecté
Je fais avec 170
le même
 chose.. les fanions = compte
Possibilité d’affecter
rendu de ce qui s’est passé
 Nécessite le suffixe S au mnémonique
 Vrai pour la grosse majorité des instructions
 Coté facultatif : particularité de l’assembleur ARM
 Il existe 5 fanions = 5 bits de PF du
registre d’état xPSR
Le registre xPSR
 Registre trois-en-un
 Contient des informations sur le processeur
 xPSR

 APSR : Applicatif – Mode courant – Celui qui


intéresse le programmeur – Contient les fanions
Le registre xPSR
 Registre trois-en-un
 Contient des informations sur le processeur
 xPSR

 IPSR : Interruption – Contient le numéro


courant de l’exception ou de l’interruption
Le registre xPSR
 Registre trois-en-un
 Contient des informations Avec
sur le: processeur
LDM R2,{R4-R7}
 xPSR Je charge les registres R4
à R7 avec ...

…trop compliqué pour


vous !

 EPSR : Exécution - Contient des informations


lors du déroulement d’instructions particulières
Le registre xPSR

 On ne s’en occupe généralement pas


directement en programmation …
 … mais essentiel dans le fonctionnement
et donc utilisation indirecte
 On le regarde en mise au point
Les fanions
 Utilité
 Pour conditionner des instructions (notamment de saut)
  Mise en place de structures algorithmiques
 Fanion C (APSR.29): Carry
 Représente la retenue lors du calcul sur des grandeurs
entières (non signées).
 C = 1  débordement lors de l’instruction précédente
(résultat faux).
 La connaissance de ce bit permet de travailler en
précision multiple.
 Fanion Z (APSR.30) : Zéro
 Vaut 1 si le résultat est nul.
Les fanions
 Indicateur N (APSR.31): Negative
 Recopie le bit de poids fort du résultat.
 N à 1  résultat négatif.
 Indicateur V (APSR.28): oVerflow
 V = 1  débordement de la représentation
signée (résultat signé faux ).
 Indicateur Q (APSR.27) : Sticky saturation flag
 Sens que pour 2 instructions de saturation

USAT et SSAT :
 Q = 1  saturation de la variable traitée.

Vous aimerez peut-être aussi