Microprocesseur + Logiciel

Dimension: px
Commencer à balayer dès la page:

Download "Microprocesseur + Logiciel"

Transcription

1 Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS

2 Présentation [IGI1001] CONTEXTE SCIENTIFIQUE OBJECTIFS DE L UNITE OBJECTIFS PEDAGOGIQUES ORGANISATION DE L UNITE... 8 C/TD-1 : OPERATIONS ARITHMETIQUES BINAIRES INTRODUCTION ADDITION BINAIRE OPERATIONS DE BASE SUR ENTIERS NATURELS Addition de deux entiers naturels OPERATIONS SUR LES ENTIERS Addition en code complément à 2 (CC2) Soustraction par addition en CC MULTIPLICATION OU DIVISION PAR UNE PUISSANCE DE Multiplication par Division par COMPLEMENTS OPERATIONS LOGIQUES Tables de vérité SOUSTRACTION BINAIRE OPERATION DE DECALAGE MULTIPLICATION BINAIRE EXERCICES SEANCE C/TD1 : OPERATIONS ARITHMETIQUES BINAIRES OPERATIONS SUR LES ENTIERS NATURELS OPERATIONS SUR LES ENTIERS RAPPELS : SYSTEME DE NUMERATION - CONVERSION SYSTEME DE NUMERATION DE BASE PRINCIPE DE CODAGE EN BASE PRINCIPE DE L ALGORITHME DE CODAGE D UN ENTIER POSITIF EN BASE CONVERSION Conversion de la base en décimal : Conversion Hexadécimal décimal et décimal Hexadécimal : Conversion Hexadécimal binaire et binaire Hexadécimal : LE CODE DCB (DECIMAL CODE BINAIRE OU 8421 OU BCD) : TABLEAU RECAPITULATIF DES DIFFERENTS CODES BINAIRES CODE ASCII (AMERICAN STANDARD CODE FOR INTERCHANGE OF INFORMATION) EN HEXADECIMAL COMPLEMENTS C/TD-2 : ORDINATEUR : MEMOIRE PRINCIPALE ORGANISATION ET ACCES AUX DONNEES ARCHITECTURE D UN ORDINATEUR Architecture interne simplifiée d un microprocesseur STRUCTURES DE DONNEES DE TYPE TABLEAU ET IMPLANTATION EN MEMOIRE Tableau à une dimension (1D) Tableau à deux dimensions (2D) MICROPROCESSEUR ARM CORTEX M3 : REGISTRES INTERNES ET ORGANISATION DE LA MEMOIRE Les registres internes Organisation mémoire Arm Cortex-M

3 Présentation [IGI1001] 3.3. ARM Cortex M3 : exemples de quelques instructions arithmétiques et logiques Exemples d instructions d accès à la mémoire : instruction load et instruction store EXERCICES SEANCE C/TD2 : ORDINATEUR : MEMOIRE PRINCIPAL ORGANISATION ET ACCES AUX DONNEES C/TD -3 : BOUCLES : ALGORITHMES ET ORGANIGRAMMES LES STRUCTURES ALGORITHMIQUES FONDAMENTALES Structure linéaire Structure alternative ou conditionnelle : Structure répétitive, structure itérative ou boucle REPRESENTATION SOUS FORMES D ORGANIGRAMMES DES STRUCTURES ALGORITHMIQUES FONDAMENTALES EXERCICES SEANCE C/TD3 : STRUCTURES DE CONTROLE BOUCLES : ALGORITHMES ET ORGANIGRAMMES C/TD -4 : STRUCTURES DE CONTROLE BOUCLES ET PROGRAMMATION EXERCICES SEANCE C/TD4 : STRUCTURES DE CONTROLE BOUCLES ET PROGRAMMATION TD 1 : MICROPROCESSEUR : REGISTRES INTERNES TRANSFERTS DE DONNEES OPERATIONS ARITHMETIQUES ET INDICATEURS PARTIE I : PRISE EN MAIN DU SIMULATEUR VISION PARTIE II : EXERCICES A FAIRE A L AIDE DU SIMULATEUR VISION TD 2 : MICROPROCESSEUR : MODES D ADRESSAGE DE LA MEMOIRE PRINCIPALE ET ACCES AUX DONNEES.. 66 TD 3 : STRUCTURES DE CONTROLES BOUCLES ET PROGRAMMATION ARM CORTEX M SOUS ENSEMBLE DU JEU D INSTRUCTION ARM CORTEX M OPERATIONS ARITHMETIQUES INSTRUCTIONS ARITHMÉTIQUES OPERATIONS LOGIQUES : ET, OU, OU EXCLUSIF, OPERATIONS DE DECALAGE INSTRUCTION DE COMPARAISON INSTRUCTION DE BRANCHEMENT CONDITIONNELLE INSTRUCTIONS LECTURE (LOAD)/ECRITURE (STORE) - MEMOIRE

4 Présentation [IGI1001] Unité IGI /2014 : Programmation des microprocesseurs Mohamed AKIL Bureau 5253, mail : [email protected] Département Informatique et Télécommunications Contexte scientifique L unité IGI 1001 est votre première unité d Informatique. L informatique est la science du traitement automatique de l information. L informatique traite de deux aspects complémentaires : le logiciel, qui décrit le traitement à réaliser le matériel (machine informatique), qui réalise ce traitement Cette unité porte sur la programmation des microprocesseurs, composants utilisés pour traiter les données selon une séquence d instructions appelée programme (logiciel). Nous couvrirons dans cette unité aussi bien l aspect logiciel de base que l aspect matériel de l informatique, c'est-à-dire l architecture de base d un ordinateur (ou d un système à base de microprocesseurs). Cette architecture de base comprend : le microprocesseur, la mémoire principale, et les Entrées/Sorties. Les données à traiter et le programme sont contenus dans la mémoire principale. Les Entrées/Sorties sont des dispositifs permettant de communiquer avec le monde extérieur (écran, clavier, etc.) 4

5 Présentation [IGI1001] Un programme, dans le cadre de cette unité, est une suite d instructions écrite à l aide d un langage de programmation (langage informatique). Le langage utilisé dans cette unité est le langage assembleur, il permet d atteindre cet objectif qu est de couvrir l aspect logiciel de base, l aspect matériel, et d expliquer/décrire le fonctionnement des éléments physiques importants d un ordinateur : le microprocesseur, la mémoire principale et les entrées/sorties. Le langage assembleur s écrit différemment selon le microprocesseur utilisé. Le microprocesseur utilisé dans cette unité est le microprocesseur ARM (Advanced RISC Machines) Cortex M3. Dans l unité IGI 1001, le programme source (qui n est rien de plus que du texte) est écrit en langage assembleur à partir du jeu d instructions du microprocesseur utilisé, ce programme doit être traduit par un logiciel appelé assembleur pour obtenir le code en langage machine (codé en binaire) de ce programme. C est ce code en langage machine qu exécute le microprocesseur. Algorithme : un algorithme est une suite ordonnée d instructions qui indique la démarche à suivre pour résoudre un problème. La programmation a pour rôle de traduire l algorithme dans un langage informatique afin que l ordinateur puisse exécuter automatiquement la séquence d instruction. Important : le point de départ en programmation est l algorithmique. C est ainsi, que dans cette unité, les solutions des problèmes à résoudre (exercices des séances C/TD, TD et TP) seront d abord décrites sous la forme d algorithmes et d organigrammes (un organigramme est une représentation graphique d un algorithme). L algorithme est par la suite écrit à l aide du langage assembleur pour obtenir le programme source, dit «code source». Ce code source est traduit en code machine à exécuter par le microprocesseur. 5

6 Présentation [IGI1001] 1. Objectifs de l unité L objectif principal de cette unité est d assimiler et utiliser les notions fondamentales nécessaires à la programmation des microprocesseurs. Ces notions portent successivement sur : Comment un microprocesseur effectue les opérations arithmétiques dans les ensembles (entiers naturels) et (entiers). Comment interprète-t-on les résultats obtenus en fonction des indicateurs positionnés par le microprocesseur : Z (éro), C (arry = Retenue), N (égatif = nombres avec un signe), V (overflow). Comment est organisée la mémoire principale, c'est-à-dire comment les données sont rangées dans la mémoire principale (RAM : Random Access Memory) et comment le microprocesseur y accède (pour lire et/ou modifier ces données). Différents modes d adressage sont utilisés par le microprocesseur pour accéder aux données en mémoire principale. Les structures algorithmiques fondamentales : structure linéaire, structure de contrôle et boucles, ainsi que les instructions pour les écrire sous la forme d algorithmes et sous la forme de programmes. La programmation des échanges de données entre le microprocesseur et les dispositifs d entrée/sortie. Comme dispositifs d E/S disponibles sur le kit EVALBOT, on peut citer : Bouton Poussoir, LED (diode électroluminescente : DEL, Light-Emitting Diode : LED), des moteurs. 6

7 Présentation [IGI1001] 2. Objectifs pédagogiques Les séances Apprentissage Par Exercices APE (notés C/TD), ces séances remplacent les cours en amphithéâtre, elles sont axées sur un apprentissage par exercices. Ces séances se font en petit groupe (environ 24 élèves par classe). Les objectifs pédagogiques de cette nouvelle organisation visent : à vous rendre actif et à favoriser les interactions o avec l enseignant o entre les étudiants à favoriser : o votre travail personnel et notamment en préparant la séance en se basant entre sur les supports distribués o et votre participation à l aide des exercices à faire par groupe lors de la séance à vous aider à développer des méthodes de travail «efficaces» : autonomie, apprendre à apprendre, travail collaboratif, Les supports (polycopiés) distribués, les sujets abordés, la planification et l organisation de l unité contribueront à atteindre ces objectifs. Ainsi, les supports traitant des sujets abordés seront distribués avant les séances concernées afin de vous permettre de préparer la séance. Un travail personnel et/ou par groupe, vous est demandé, il vous permettra de décrire les notions traitées dans les supports, de les expliquer et les utiliser. Cette préparation sert aussi à identifier les questions à poser en séance, pour que les réponses y soient apportées. En se basant sur les supports distribués, ces séances seront consacrées à la résolution de problèmes en interaction avec l enseignant et le groupe. IGI Semaine Heure S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 C/TD TD TP contrôles continus 1 1 contrôle Final en salle de TP : programme à mettre en œuvre avec le simulateur VISION 4 sur PC : durée 2 heures 2 7

8 Présentation [IGI1001] 3. Organisation de l unité Séances méthodologiques Apprentissage par exercices (APE) - travail personnel et en groupe C/TD1 C/TD2 C/TD3 C/TD4 Opérations arithmétiques dans les ensembles N et Z et indicateurs Z, C, V, N Organisation de la mémoire principale et accès aux données Structures de contrôles et boucles : algorithmes et organigrammes Structures de contrôles/ boucles et programmation ARM TD en salle machine - utilisation du simulateur VISION 4 sur PC TD1 TD2 TD3 TD4 ARM Cortex M3 : registres de données internes, calculs arithmétiques et indicateurs Z, C, V, N ARM Cortex M3 : organisation mémoire - modes d'adressage et accès aux données ARM Cortex M3 : structures de contrôles/ boucles et programmation ARM CORTEX M3 : Programmation des entrées -sorties TD en salle TD5 PROJET Travaux pratiques sur les Kits StellarisRobotic Evaluation Board TP1 TP2 TP3 TP4 E/S E/S Projet Projet 8

9 Opérations arithmétiques binaires [C/TD1] C/TD 1 Unité IGI 1001 Programmation des microprocesseurs Opérations Arithmétiques binaires 9

10 Opérations arithmétiques binaires [C/TD1] C/TD-1 : Opérations arithmétiques binaires Préparation de la séance : lire le support page 10 à page 19. Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes, être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. les appliquer en faisant les exercices notés exercice à faire. Un bref rappel sur le système de numération binaire et la conversion (changement de base est donnée : page 21 à page 26. Pré-requis de la séance : cette séance s appuie sur les notions de base et fondamentales portant sur la représentation des nombres dans les ordinateurs, dont le codage des entiers naturels et des entiers. Le codage est traité dans l unité IGE-1001 (Noury Ludovic). 1. Introduction Les opérations considérées sont les opérations binaires : addition, soustraction, division, multiplication, comparaison. Les valeurs des opérandes, c'est-à-dire les données calculées par ces opérations et le résultat produit appartiennent à l ensemble des valeurs représentables ci-dessous en fonction de la représentation adoptée. Entiers naturels : les valeurs représentables des nombres entiers naturels codés en binaire sur n bits (Binary digit) sont : Nombres positifs Représentation sur n bits en base Exemple : soit un nombre entier naturel codé sur 8 bits ou un octet (n = 8 bits) : Nombres positifs Représentation sur 8 bits en base 2 0 = valeur min soit =2 7 = soit 2 8-1=255= valeur max

11 Opérations arithmétiques binaires [C/TD1] Entiers : par convention pour un nombre codé sur n bits, le bit de rang n-1 est appelé bit de signe, c est le bit de poids fort. Les valeurs représentables des entiers sur n bits sont : Valeur Représentation binaire sur bits Valeur minimale Valeur maximale Ainsi sur n bits, on peut représenter des entiers à Exemple : pour n = 8 bits, ces valeurs sont : 2,...,2 n 1 n 1 1. Valeur Représentation binaire sur bits Valeur minimale soit (2 8-1 )=-2 7 = Valeur maximale soit =2 7-1= Le complément à 2 (noté C2) : n, Si = 1 permet de trouver la valeur absolue du nombre entier codé sur n bits. C1 est le complément à 1. Exemple : soit un nombre entier A codé sur 4 bits = 1001 ce nombre est négatif, le bit de poids fort = 1, c est le bit de signe. Le C2 permet de trouver sa valeur absolue : C2(1001) = C1 (1001) +1 = = 0111, ce qui signifie que, donc A = -7. Remarque : dans les microprocesseurs, la taille n est fixe et peut être égale à : 8, 16, 32, 64, 128 bits. 11

12 2. Addition Binaire Opérations arithmétiques binaires [C/TD1] Les règles de l addition binaire sont données ci-dessous : x y s r est la somme et représente la retenue. La somme est égale à : Avec : AND : ET logique, OR : OU logique XOR : OU exclusif La retenue que l on note simplement (2). On réalise ainsi un demi-additionneur avec 2 entrées et 2 sorties. L addition binaire est commutative et associative. En étendant cette opération à trois bits x, y et z, on obtient un additionneur complet, avec 3 entrées : et 2 sorties :. (1) 3. Opérations de base sur entiers naturels 3.1. Addition de deux entiers naturels Soit à additionner 2 nombres et codés sur bits et représentés respectivement par les suites : ; avec : bit de poids faible et : bit de poids fort et ; avec : bit de poids faible et : bit de poids fort La somme de peut être supérieure à la valeur maximale représentable sur bits, c'est-à-dire à et n est donc pas nécessairement représentable sur n bits. 12

13 Opérations arithmétiques binaires [C/TD1] La partie représentable de la somme est, est représentée en convention standard par la suite Rappelons que dans le cas d un nombre entier, le bit est le bit de poids fort, il représente le bit de signe par convention. Dans la représentation en complément à 2, un nombre négatif est codé par le complément à 2 de sa valeur absolue. Les sont obtenus à partir des, en appliquant l opération d addition binaire bit à bit de droite à gauche en reportant (on dit aussi en propageant) les retenues éventuelles. La retenue prise en compte au rang, est engendrée au rang pour, la retenue initiale. Un rang est aussi appelé un étage. La dernière retenue codée sur un bit, elle est engendrée au rang : Cette retenue est appelé report, en anglais Carry et noté C. sur D après la définition de la retenue, on a : Si la dernière retenue, la somme est représentable sur. Si la dernière retenue, la somme n est représentable sur bits on dit qu il y a débordement, en anglais overflow. Le nombre représenté par la suite est égale à : et non. (2) Remarque importante : Dans les microprocesseurs la valeur du report est donnée par le bit C appelé indicateur de Carry (ou Flag en anglais), il est en général mémorisée dans un registre interne du microprocesseur, appelé registre d état. Rappel : Un registre est formé par un ensemble de bascules. Pour mémoriser une information numérique codé en binaire sur n bits, il faut un registre comprenant n bascules. Le débordement dans l addition des entiers naturels est indiqué par l indicateur C = 1. On a un dépassement de capacité sur les entiers naturels. 13

14 Opérations arithmétiques binaires [C/TD1] Exemple : Addition binaire sur 8 bits r = report a b a+b Principe de l addition en base 2 : on additionne les bits colonne par colonne en commençant par le bit de poids faible (bit de rang 0). Le résultat de l addition précédente est capacité sur les entiers naturels. et C=1 dépassement de Exercice à faire : faire l opération , donner le résultat en binaire et sur 8 bits et l état de l indicateur C. Exemple : l opération , effectuée en Hexadécimale sur 8 bits (cette représentation permet de condenser l écriture en binaire) donne le résultat ci-dessous : Ainsi : r 0 a 0xC5 b 0xE3 a+b 0xA = 8 C + E = = 26 = ce que donne A en hexadécimal et la retenue C = 1. Le résultat et C=1 dépassement de capacité sur les entiers naturels. Vérification : En base 10, le nombre entier naturel a = 197, (c est à dire a = et b = 227, la somme. Cette valeur n est pas représentable sur 8 bits, car la valeur maximum représentable sur 8 bits est 255. Le résultat de l addition binaire que nous avons obtenu est soit. Comme C, pour obtenir le résultat correct on procède comme suit : soit. La somme obtenue en hexadécimale est 0xA8, soit le résultat. Exercice à faire : Si on effectue la somme l état de C? Justifiez votre réponse. comme C=1, avec a et b codés sur 16 bits. Quel est 14

15 Opérations arithmétiques binaires [C/TD1] 4. Opérations sur les entiers 4.1. Addition en code complément à 2 (CC2) Soit 2 nombres représentés en code complément à 2, on a la relation suivante : (3) La relation (3) montre que si alors l addition de et est correctement représentée par l addition standard. L indicateur V (overflow) indique si le résultat de la somme de 2 entiers sur n bits est représentable sur n bits. Le tableau ci-dessous donne les différents cas possibles de l addition de 2 nombres entiers en CC2 sur n bits et l état de l indicateur V (dépassement de capacité, overflow). V = 1 si le résultat de la somme de a et b ne peut pas être représenté en sur n bits : : est le report de l addition des bits de rang : est le dernier report, il représente le report de l addition des bits de rang : est le bit de poids de poids fort de la somme, c est le bit de signe de la somme. de Si le résultat de l addition est : s est représentable sur n bits s est non représentable sur n bits s est toujours représentable sur n bits s est non représentable sur n bits s est présentable sur n bits Remarque importante : le débordement dans le cas de l addition standard est signalé par positionnement de l indicateur C(arry) à 1., ce qui engendre le Le débordement dans le cas de l addition en CC2 est indiqué par l indicateur V=1 (overflow). 15

16 Exemple : r = report a b a+b V=C=1 V=1 et C=0 V=0 et C=1 V=C=0 débordement débordement correct correct r n =1 ; r n-1 =0 r n =0 ; r n-1 =1 r n =1 ; r n-1 =1 r n =0 ; r n-1 =0 Cet exemple vérifie que si représentable en CC2 sur 8 bits. alors il n y a pas de débordement et la somme est Remarque : C=1 n implique pas que V soit égal à 1. Exercice à faire : illustrer les cas précédents par des exemples d opérations en binaire sur 16 bits Soustraction par addition en CC2 On peut calculer la soustraction de en effectuant l opération. Les résultats de sont obtenus modulo en effectuant l addition. 5. Multiplication ou division par une puissance de Multiplication par La multiplication d un entier codé sur par la suite de bits par ( est obtenue par un décalage de cette suite de bits de positions vers la gauche. Les bits de plus faible poids sont remplacés par des Si le résultat n est représentable, un débordement est généré. Exemple : soit l opération 10*4 = 40. Cette opération réalisée sur 8 bits donne : 10 = décalé à gauche de 2 postions donne : soit = = 40. Exercice à faire : à quoi correspond l opération 16*3.

17 5.2. Division par Opérations arithmétiques binaires [C/TD1] La division d un entier codé sur par la suite de bits par ( est obtenu par un décalage de cette suite de bits de positions vers la droite. Le bit de signe est recopié dans les bits de poids le fort. Ce type de décalage est dit arithmétique, dans le décalage dit logique, les poids fort sont remplies de 0. de Exemple : soit à réaliser l opération 20 = = et décalé à droite d une position donne soit 10. Exercice à faire : à quoi correspond l opération 17

18 Compléments [C/TD1] Compléments 1. Opérations logiques 1.1. Tables de vérité a b ET OU OU Exclusif a b NON ET NON OU NON Exclusif Le complément appelé NON ou NOT : si alors et si alors Le ET appelé AND : Le OU inclusif appelé OU ou OR : et le NON ET appelé NAND. et le NON OU appelé NOR. Le OU Exclusif appelé XOR et le NON OU Exclusif appelé XNOR. 2. Soustraction binaire Les règles de la soustraction sur les bits sont données ci-dessous : x y s_ = x - y r_ On a : et, est appelé «emprunt» (borrow) Exemple : = 12 soit en binaire : = = 18

19 Compléments [C/TD1] 3. opération de décalage Décalage logique à gauche de k positions : Exemple : décalage logique à gauche avec k = 1 : Cette opération revient à faire une multiplication par 2 (cas où k=1) Décalage logique à droite de k positions : Exemple : décalage logique à droite avec k = 1 : Cette opération revient à faire une division par 2 (cas où k=1) 4. Multiplication binaire Les règles de la multiplication sur les bits sont données ci-dessous : x y Soit le nombre défini par la suite binaire : (ce nombre est égal à 28), le décalage à gauche d une position de cette représentation binaire donne : soit 56. Ce qui correspond à une multiplication par 2. Soit le nombre défini par la suite binaire : , le décalage à droite d une position donne : soit 14. Ce qui correspond à une division par 2. Exemple : soit l opération 39 x 6 = 234, multiplication de 2 entiers naturels : x =

20 Exercices [C/TD1] Exercices séance C/TD1 : Opérations arithmétiques binaires 1. Opérations sur les entiers naturels 1.1 Coder en binaire sur 8 bits les entiers naturels des opérations d addition ci-dessous et faire leurs additions sur 8 bits : ; Coder en hexadécimal sur 8 bits les opérations d addition ci-dessous et faire leurs additions sur 8 bits : ; , Pour chacune de ces opérations, on donnera : Le résultat sur 8 bits L état de l indicateur C positionné à 1, sa signification et l interprétation du résultat de l opération. 2. Opérations sur les entiers 2.1 Donner en CC2 8 bits les nombres 61 et -61 et faire leur somme sur 8 bits. 2.2 Effectuer en CC2 sur 8 bits les opérations suivantes : 1+(-2) ; ; (-3) + (-127) ; (-127) ; (-63) + ( 63). Pour chaque opération on donnera le résultat sur 8 bits et l état des indicateurs C et V, la signification de chacun d eux et on expliquera comment on les utilise pour interpréter le résultat de l opération Coder sur 16 bits en CC2 l opération (-127) Donner son résultat sur 16 bits et les états des différents indicateurs C et V. Que peut-on conclure? 3. Opérations sur les entiers codés sur 32 bits Effectuer en hexadécimal en CC2 sur 32 bits les opérations suivantes : (-1) + (-2) ; (-3) + (-127) ; (-127) + (127) ; (-63) + (-63), ainsi que l addition du plus grand nombre entier non signé plus 1. Pour chaque opération on donnera le résultat sur 32 bits et l état des indicateurs C et V, la signification de chacun d eux et on expliquera comment on les utilise pour interpréter le résultat de l opération 4. Opérations de multiplication/décalage 3.1 Effectuer l opération : 3.2 Effectuer pour les nombres 0x01F1 et 0xFF85 les opérations suivantes : Un décalage à gauche de 2 positions Un décalage arithmétique à droite de 2 positions Un décalage logique à droite de 2 positions Donner pour chacune de ces opérations la valeur du résultat. 20

21 Système de numération - conversion [Rappels] Rappels : système de numération - conversion Introduction : Pour être traitées, les informations sont temporairement mémorisées dans un emplacement de la mémoire principale. Cet emplacement est aussi appelé case mémoire. Elles peuvent être rangées temporairement dans les registres internes du microprocesseur. Si l information est représentée sur bits, par convention du rang de droite à gauche, on peut avoir valeurs distinctes de l information. On peut donc représenter une donnée de différents types par exemples : un nombre entier, un nombre fractionnaire, une chaîne de caractères. 1. Système de numération de base Tout entier naturel peut être représenté par une suite de chiffres de la base :... b où les sont les chiffres de la base. Ce nombre en notation étendue (ou positionnelle) a pour valeur : avec et. est la valeur attachée à la position du chiffre. Généralement, tout nombre est représenté dans le système de numération par une suite de chiffres qui peut comprendre une virgule relative au système de base, les valeurs de position des chiffres situés à droite de la virgule sont des puissances négatives de la base. Exemples : - système de numération décimal : les chiffres à Le nombre décimal 245 est ainsi égal à. - système de numération hexadécimal : les chiffres à (1) Le nombre est ainsi égal à. Ce nombre est aussi noté 0xF5 ou, pour indiquer qu il est exprimé en hexadécimal. - système de numération binaire : les chiffres binaires (bit = binary digit), Le nombre est égal à. On le note :

22 Système de numération - conversion [Rappels] Le tableau ci-dessous représente le code binaire pur ou naturel sur 4 bits et sa correspondance en hexadécimal et décimal : Chiffres HEX. Valeurs décimales Équivalence en binaire A B C D E F Le nombre décimal 11,25 s écrit :. Ce nombre comporte deux parties : la partie entière = 11 et la partie fractionnaire = 25. Le nombre binaire Remarque : plus la base nombre. est faible plus il faut de chiffres pour représenter un même 2. Principe de codage en base Il repose sur le principe de la division entière : pour convertir le nombre en base : (2) (3) Le code de a dans la base b est donc b 22

23 Système de numération - conversion [Rappels] Exemple : soit à convertir le nombre a = dans la base b = Principe de l algorithme de codage d un entier positif en base Données en entrées : l entier à coder et la base de numération Tant que le quotient n est pas nul faire Diviser successivement le nombre par la base Fin Tant que Résultat : la représentation du nombre dans la base est donnée par l ordre inverse des restes des différentes divisions : du premier au dernier restes écrits de gauche à droite. 4. Conversion 4.1. Conversion de la base en décimal : Exemple : binaire décimal :. Le nombre binaire est représenté comme la somme de produits entre chaque chiffre binaire et sa valeur de position. 23

24 Système de numération - conversion [Rappels] 4.2. Conversion Hexadécimal décimal et décimal Hexadécimal : Exemples : Hexadécimal décimale : ( ) 16 ou ( ) H = Décimal Hexadécimal : Donc 175 = ( ) 16 ou ( ) H soit 0xAF 4.3. Conversion Hexadécimal binaire et binaire Hexadécimal : Exemples : Hexadécimal binaire : ( ) 16 ou ( ) H donc 0xAF = Binaire Hexadécimale : = (89) 16 ou (89) H soit 0x89 5. Le code DCB (Décimal Codé Binaire ou 8421 ou BCD) : Chiffre décimaux Code DCB Le tableau ci-dessus représente le code DCB à 4 bits (c est une restriction du code binaire pur aux chiffres décimaux de 0 à 9), les bits sont affectés de la gauche vers la droite des poids 8 ( ), 4 ( ), 2 ( ) et 1 ( ). La représentation BCD du nombre décimal 145 est , chaque chiffre nécessite au moins 4 bits. Ce codage est appelé code DCB pondéré (dit code pondéré) : il consiste à affecter des poids aux bits. Il est utilisé dans les systèmes d affichage des chiffres décimaux (calculatrice). Remarque : un nombre décimal peut être codé directement (représentation binaire directe, appelé aussi code binaire pur ou naturel) en utilisant l algorithme de codage en base b. Ce codage est utilisé pour effectuer des opérations mathématiques ( ). Le code binaire pur présente l inconvénient que plusieurs bits changent lors du passage d une combinaison à une autre ; il existe une autre représentation appelée code Gray ou binaire réfléchi. Dans le code Gray, seul un bit change d état lors du passage d une combinaison à une autre. Ce code n est pas pondéré et donc pas adapté pour le calcul numérique. Ce code est utilisé pour la visualisation d informations ou pour la conversion de grandeurs analogiques. 24

25 Système de numération - conversion [Rappels] 6. Tableau récapitulatif des différents codes binaires Binaire naturel Hexadécimal Décimal Gray ou binaire réfléchi BCD A B C D E F Code ASCII (American Standard Code for Interchange of Information) en hexadécimal Ce code permet de représenter sur 7 bits l'ensemble des caractères alphanumériques, des symboles et des commandes de transmission, le code du caractère est 41 H soit 0x41, le code de CR (Carriage Return retour à la ligne) est 0D H soit 0x0D et le code de LF (Line Feed - saut de ligne) est 0A H soit 0x0A. Code A B C D E F 0x00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT NP CR SO SI 0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 0x20 SP! " # $ % & ' ( ) * +, -. / 0x : ; < = >? A B C D E F G H I J K L M N O 0x50 P Q R S T U V W X Y Z [ \ ] ^ _ 0x60 ` a b C D E F G h I J K L m n O 0x70 p q R S T U V W x Y Z { } ~ DEL L «UNIversal CODE» UNICODE code les caractères sur 16 bits, il est destiné à remplacer les tables ASCII ou ANSI. 25

26 Compléments [Rappels] Compléments 1. Ordinateur : machine informatique capable d exécuter un programme. La structure d un ordinateur modèle de Von Neumann comprend le processeur (microprocesseur), la mémoire principale et les organes d entrées/sorties (écran, clavier, disque dur). 2. Mémoire : dans un ordinateur, il existe plusieurs types de mémoires : par exemple la mémoire principale, qui est externe au processeur. Cette mémoire stocke (mémorise) entre autres les informations utilisées par le processeur lors de l exécution d un programme. On peut écrire une valeur dans une case mémoire et on peut lire le contenu d une case mémoire. Chaque case mémoire contenant une information codée sur 8 bit (un octet) est identifiée par un numéro appelé adresse (adresse de la case mémoire). 3. Registre : les registres se trouvent à l intérieur du processeur, leur nombre est limité. D accès rapide, ils permettent la mémorisation temporaire d informations. On peut lire et écrire dans des registres. Les ordinateurs PC sont équipés de différents types de processeurs, par exemple le processeur AMD Athlon II X2 équipant les PC (2 cores, fréquence de fonctionnement 2,9 Ghz, mémoires caches internes, des registres internes de 64 bits). II existe aussi d autres types de microprocesseurs, par exemples : 8 bits, 16 bits, 32 bits 4. Représentation de données : Type de donnée Architecture 32 bits 64 bits Char 8 bits 8 bits Short 16 bits 16 bits Int 32 bits 32 bits Long 32 bits 64 bits long long 64 bits 64 bits pointeur (adresse) 32 bits 64 bits 5. Algorithme : ensemble de règles opératoires dont l application permet de résoudre un problème (par exemple : trier un ensemble de nombres entiers naturels du plus petit au plus grand) en un nombre fini d opérations (par exemples : addition, multiplication, comparaison). Une fois l algorithme défini, on écrit son programme. L ordinateur exécute le code correspondant à ce programme (code exécutable). 6. Programme : c est la réalisation ou l implémentation d un algorithme au moyen d un langage informatique donné sur un ordinateur (machine informatique) donné. 26

27 Architecture d un ordinateur [C/TD2] C/TD 2 Unité IGI 1001 Programmation des microprocesseurs Ordinateur : Mémoire principale organisation et accès aux données 27

28 Architecture d un ordinateur [C/TD2] C/TD-2 : Ordinateur : Mémoire principale organisation et accès aux données Préparation de la séance : lire le support (page 28 à page 44). Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes, être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. et les appliquer en faisant les exercices. 1. Architecture d un ordinateur On peut décrire l architecture d un ordinateur, c'est-à-dire son organisation, en se basant sur le modèle de von Neumann. John Von NEUMANN ( ), mathématicien américain d origine hongroise, a donné son nom à l architecture utilisée dans la plupart les ordinateurs. Ce modèle est composé de 3 composants : le processeur, la mémoire principale et les entrées/sorties. 28

29 Architecture d un ordinateur [C/TD2] L architecture d un ordinateur basée sur ce modèle comprend : le microprocesseur : c est l unité de traitement de l information : exécution des instructions et des traitements (opérations de calculs) des données. Il comprend 2 parties : 1. l Unité Arithmétique et Logique (U.A.L) ou unité de traitement. Cette unité effectue les opérations de base : opérations arithmétiques (addition, soustraction, multiplication, division) et opérations logiques (ET, OU). 2. L unité de contrôle qui séquence les opérations. la mémoire principale : c est l unité de stockage temporaire des informations nécessaires à l exécution d un programme : instructions (code du programme) et données. les entrées/sorties : unités d E/S, elles permettent la communication entre {l ensemble processeur mémoire} et les unités périphériques (disque dur, caméra, clavier). Ces communications se font à travers des bus : ce sont des supports physiques de transfert d informations. 29

30 Architecture d un ordinateur [C/TD2] Le bus microprocesseur - mémoire est composé de 3 bus : le bus de données : bus bidirectionnel pour l échange d informations entre le microprocesseur ( et la mémoire le bus d adresse : bus unidirectionnel pour adresser la mémoire, il indique la case mémoire à laquelle le microprocesseur veut accéder (accès soit en lecture soit en écriture) le bus de contrôle : il comprend différents signaux de contrôle dont le signal de lecture/écriture appelé R/ pour Read/Write. Si R/ = 0 le microprocesseur demande une écriture, sinon une lecture. La taille en bits de ces bus est de : pour le bus d adresse, pour le bus de données et pour le bus de contrôle. dépendent du type de microprocesseur utilisé. L espace mémoire adressable est fixé par et il est égal à, les adresses sont comprises dans l intervalle. 30

31 Architecture d un ordinateur [C/TD2] Exemple : si, le bus d adresse comprend 16 lignes (16 fils) notées :, est le bit de poids faible. La taille en octets de l espace adressable est (1 kilo = 1024 = ). octets soit 64 kilo octets, c'est-à-dire Adresse sur 16 bits en Hexadécimal 0000H Cases mémoire 1 er élément H.. FFFFH.. Dernier élément Remarque important : une adresse identifie l emplacement en mémoire d un élément codé sur 8 bits (soit un octet) Architecture interne simplifiée d un microprocesseur L architecture interne simplifiée d un microprocesseur comprend une unité de contrôle (appelée UC), une unité de calcul (appelée unité arithmétique et logique notée U.A.L) et des registres internes. 31

32 Architecture d un ordinateur [C/TD2] L unité de contrôle analyse le code de l instruction à exécuter et séquence dans le temps les actions internes élémentaires permettant la réalisation de l instruction, c'est-à-dire la production du résultat. Sous le nom de partie opérative on trouve les registres internes et l UAL. Cette partie réalise les actions élémentaires nécessaires à l exécution de l opération. L UAL réalise les opérations arithmétiques et les opérations logiques. Les registres internes stockent temporairement les opérandes, c'est-à-dire les données en entrée des opérations et les résultats intermédiaires des calculs. 2. Structures de données de type tableau et implantation en mémoire Les données traitées par le microprocesseur sont stockées temporairement en mémoire principale. Ces données sont organisées aussi bien au niveau algorithme que programme sous la forme de structures : elles sont déclarées avec leurs types. Un type constitue une description de la représentation interne des données en machine. Une structure de données est l implémentation explicite d un ensemble organisé de données avec les opérations d accès, de construction et de modification associées. Dans ce qui suit, on s intéresse uniquement au type élémentaire tableau Tableau à une dimension (1D) Un tableau à une dimension est une liste contiguë d éléments de même type. Chaque élément est localisé par son indice ou son adresse. Exemple : on peut illustrer un tableau de taille de la façon suivante : 0 1 i n-1 Ce tableau est implémenté sous la forme de principale. emplacements consécutifs en mémoire La zone mémoire attribuée à un tableau est définie par : L adresse de début d implantation du tableau La taille des éléments stockés : un élément peut être de taille 8/16/32/64 bits Le nombre d éléments stockés Exemple : Une chaîne de caractères «bonjour» peut être implantée sous la forme d un tableau de caractères. Si ce tableau commence à l adresse 0x1000 (adresse en hexadécimal de début d implantation en mémoire de ce tableau), la taille de ce tableau est, la chaîne contient 7 caractères. 32

33 Architecture d un ordinateur [C/TD2] Chaque élément du tableau représente un caractère codé en ASCII et prend un emplacement en mémoire. Chaque élément du tableau, c'est-à-dire chaque code ASCII d un caractère de la chaîne est stocké sous la forme d un octet. Adresse sur 16 bits codée en Hexadécimal 0000H H Cases mémoire 1er élément de T = Code ASCII de b = 0x H Dernier élément de T = code ASCII de r = 0x Tableau à deux dimensions (2D) Un tableau 2D est implanté de façon contiguë en mémoire, ligne par ligne ou colonne par colonne. L exemple ci-dessus illustre un tableau de taille, étant le nombre de lignes et le nombre de colonnes. E E 1n E m1 E mn L implantation ligne/ligne de ce tableau est représentée ci-dessous : E E 1n E E 2n E m E mn Ligne 1 ligne 2 ligne m Un exemple de tableau 2D est l implantation en mémoire d une image en niveau de gris de taille pixels. Un pixel définit un point de l image et est représenté par la valeur de son intensité lumineuse appelé niveau de gris. 33

34 Architecture d un ordinateur [C/TD2] Dans ce cas, un pixel, est un nombre, est codé sur 8 bits, il est compris entre 0 et 255, soit 256 valeurs possibles. Ainsi, on peut considérer une image comme une matrice appelée aussi un tableau 2D. Chaque point de l image est représentation par sa valeur codée sur 8 bits. Cette valeur représente le niveau de gris du pixel considéré. Un niveau de gris correspond à la luminosité du pixel. 0 correspond au noir et la valeur 255 (soit 0xFF) correspond au blanc. 34

35 Architecture d un ordinateur [C/TD2] 3. microprocesseur ARM Cortex M3 : registres internes et organisation de la mémoire Le Cortex M3 est construit autour d une architecture de type «load store» (chargement/rangement). Il utilise des données de 32 bits et dispose d un bus d adresse de 32 bits. Au cours du fonctionnement, les données en mémoire principale sont d abord chargées dans les registres internes du microprocesseur, lequel effectue les opérations sur ces registres et, par la suite, range le résultat en mémoire Les registres internes Le microprocesseur cortex M3 dispose de 17 registres (R0 à R15, et PSR), la taille de chaque registre est de 32 bits : 13 registres à usage général : R0 à R12. R0 à R7 sont dits «low registers» et R8 à R12 «high registers», ces derniers possèdent des restrictions d emploi par rapport à certaines instructions. Ces registres ne sont accessibles que par paquet de 32 bits. Un compteur ordinal ou Program counter : R15 qui contient l adresse en mémoire de la prochaine instruction à exécuter. Le bit 0 de ce registre est toujours à 0 (adresse paire). Comme les instructions sont codées sur 16 bits (cas : Thumb) ou 32 bits (Thumb2), elles occupent au moins 2 adresses consécutives. Un registre d état (Program Status register) : xpsr avec x pouvant être A=Application, I=Interrupt ou E=Execution. 35

36 Architecture d un ordinateur [C/TD2] Important : Les bits 28 à 31 de ce registre contiennent les indicateurs/drapeaux (Condition Code Flags) : N bit 31 bit de poids fort de APSR Recopie le bit de poids fort du résultat, si N = 1 alors le résultat <0 Z bit 30 de APSR Z = 1 si le résultat = 0 C bit 29 de APSR Si C = 1 il y a un débordement de la représentation non signée : entiers naturels V bit 28 de APSR Si V = 1 il y a un débordement de la représentation signée : entiers Exemples : Opération d addition et positionnement des différents indicateurs. FFFF FFFFh h 7FFF FFFFh h + 1 = = = h C = 1 et Z = 1 C = Z = V = 1 N = V = 1 A ces registres, on ajoute 2 registres spéciaux : R13 (registre pointeur de pile), R14 (Link register). Le registre R15 est aussi considéré comme un registre spécial. 36

37 Architecture d un ordinateur [C/TD2] 3.2. Organisation mémoire Arm Cortex-M3 L espace mémoire du Cortex-M3 est de 4Go, soit 2 32 adresses consécutives (bus d adresse de 32 bits). Une adresse mémoire correspond à un octet. Tous les accès à la mémoire se font via des instructions Load ou Store. 37

38 Architecture d un ordinateur [C/TD2] Le rangement des données en mémoire se fait selon la norme little endian. L exemple cidessous (mémoire vue comme une suite d octets) illustre cette norme : rangement du mot 0xDDCCBBAA à l adresse 0x et du demi-mot 0x5566 est rangé à l adresse 0x : Adresse sur 32 bits codée en Hexadécimal Cases mémoire 0xFFFFFFFF.... 0x x x x XDD 0xCC 0xBB 0xAA.. 0x x x55 0x66 Exemple : mot de 32 bits (4 octets) rangé à l adresse 0x : 0xDD 0xCC 0xBB 0xAA 0x Exemple : organisation par mots de 16 bits (2 octets) à l adresse 0x xBB 0xAA 0x

39 Architecture d un ordinateur [C/TD2] 3.3. ARM Cortex M3 : exemples de quelques instructions arithmétiques et logiques Soit la syntaxe suivante : Code opération opérande 1, opérande 2, {opérande 3} Code opération = opération à effectuer Opérande 1 = destination, contient le résultat de l opération Exemple : Cas d un opérande immédiat : MOVS R6,#0x55 #0x55 est une constante (valeur immédiate), on a R6 0x Le suffixe S indique le positionnement des indicateurs (flags), dans cette exemple l instruction MOVS ne positionne aucun indicateur à 1 donc on aura : N = Z = C = V = 0. Remarque : l opérande immédiat 0x55 fait partie du code de l instruction. Comme le code d une instruction peur être soit codé sur 16 ou 32 bits, la valeur de l opérande immédiat (constante) est limitée par la taille du code de l instruction. Les opérandes 2 et 3 sont les opérandes source Instruction d addition : ADD ADD{S}<c> {R d,}<r n >,#<const> R d R n + const {S} : est un suffixe optionnel, s il est spécifié alors les indicateurs seront positionnés à 1 selon le résultat de l opération sur 32 bits. <c> : est un suffixe optionnel, si la condition spécifiée est vraie, l instruction sera exécutée. R d R n : est le registre destination, il contient le résultat de l opération : est le registre contenant l opérande source #<const> : est une constante 39

40 Architecture d un ordinateur [C/TD2] Exemple : ADD R1,#5 R1 R1 + 5 Exercice à faire : Donner la séquence d instruction pour réaliser les opérations suivantes R1 R1+1 Si R1 = 0 alors faire R6 R5 + R6 On supposera que l état initial de R1 = 0xFFFFFFFF Rappel : si R1 = 0 l indicateur Z = 1. Le suffixe <c> dans le cas de cette condition s écrit EQ (pour Equal). ADD{S}<c> {R d,}<r n >,<R m >{,<shift>} R d R n + shift(r m ) <R m > : contient la valeur à décaler <shift> : opérateur optionnel indique le décalage de bits du registre R m Exemple : ADD R1,R2,R2, LSL #2 R1 R2 +4*R2 : les bits du registre R2 sont décalés à gauche de 2 positions (Logical Shift Left), ce qui revient à multiplier le registre R2 par 4. Exercice à faire : soit l opération y x 6x 7x, on suppose que x=3 est contenu dans le registre R5, le résultat y est rangé dans R6. Donner l instruction qui réalise cette opération Instruction logique ET : AND AND{S}<c> {R d,}<r n >,#<const> R d R n ET const AND{S}<c> {R d,}<r n >,<R m >{,<shift>} R d R n ET shift(r m ) Exemple : ANDS R1,R1,R2 R1 R1 ET R2 si R1 = 0xFFFFFFFF et R2 = 0 alors le résultat de cette instruction est R1 = 0x et l indicateur Z = 1. Exercice à faire : Si R1 contient la valeur 0xFFFFFFFF, donner l instruction qui permet d obtenir le résultat suivant : R1 = 0XFFFFFFF0 40

41 Instructions de décalage/rotation Architecture d un ordinateur [C/TD2] LSL : décalage logique à gauche, ce décalage introduit des zéros à droite, le dernier sortant affecte l indicateur C. LSL{S}<c> {R d,}<r n >,#<imm> R d R m <<imm LSL{S}<c> {R d,}<r n >,<R m > R d R m <<R m Exercice à faire : illustrer par un exemple cette instruction et vérifier que le résultat obtenu est correct. 41

42 Architecture d un ordinateur [C/TD2] LSR : décalage logique à droite, ce décalage introduit des zéros à gauche, le dernier bit sortant à droite affecte l indicateur C. LSR{S}<c> {R d,}<r m >,#<imm> R d R m >>imm LSR{S}<c> {R d,}<r n >,<R m > R d R n >>R m <R m > : contient la valeur à décaler Exercice à faire : illustrer par un exemple cette instruction et vérifier que le résultat obtenu est correct ASR : décalage arithmétique à droite, ce décalage réintroduit le bit de signe à gauche, le dernier bit sortant à droite affecte l indicateur C. ASR{S}<c> {R d,}<r n >,#<imm> R d R m >> imm ASR{S}<c> {R d,}<r n >,<R m > R d R n >> R m Exercice à faire : illustrer par un exemple cette instruction et vérifier que le résultat obtenu est correct ROR : rotation vers la droite, cette rotation réintroduit le bit 0 sur le bit 31 à chaque tour. ROR{S}<c> {R d,}<r n >,#<imm> R d rotation(r m ) de imm bits ROR{S}<c> {R d,}<r n >,<R m > R d rotation [R n ] de R m bits Exercice à faire : illustrer par un exemple l intérêt de cette instruction et vérifier que le résultat obtenu est correct RRX : rotation étendue vers la droite Cette instruction fonctionne selon le même principe que ROR, incluant dans la rotation l indicateur C. RRX{S}<c> {R d,}<r n >,<R m > R d rotation [R n,c] de R m bits Exercice à faire : illustrer par un exemple l intérêt de cette instruction et vérifier que le résultat obtenu est correct. 42

43 Architecture d un ordinateur [C/TD2] 3.4. Exemples d instructions d accès à la mémoire : instruction load et instruction store Les modes d adressage : Mémoire/registre Le tableau ci-dessous donne les principaux modes d adressage. Ainsi, l adresse de la mémoire, notée adr_mem est déterminée par : Le contenu d un registre. C est le mode d adressage indirect, noté [R n ]. Le contenu d un registre ± un constante. La valeur de la constante est appelée offset. C est le mode indirect avec déplacement, noté [R n,# offset]. La somme de deux registres. C est le mode indirect avec index, noté [R n,r m ]. R n contient l adresse de base et R m la valeur de l index. [adr_mem] Mode d adressage Calcul de l adresse de la mémoire [R n ] indirect adr_mem = R n [R n,# offset] Indirect avec déplacement adr_mem = R n offset [R n,r m ] Indirect avec index adr_mem = R n + R m Syntaxe de l instruction de chargement (Load) : chargement d un registre du microprocesseur par le contenu d une case mémoire. LDR R n,[adr_mem] R n contenu de la mémoire dont l adresse est donné par Syntaxe de l instruction de rangement (Store) : rangement d un registre du microprocesseur dans une case mémoire STR R n,[adr_mem] le contenu du registre R n dans une case mémoire d adresse adr_mem. 43

44 Architecture d un ordinateur [C/TD2] Exercice à faire : soit la matrice 5x5 ci-dessous : Chaque élément de la matrice est codé sur 8 bits, l élément (0,0) de valeur 0 est rangé à l adresse 0x Cette matrice est implantée en mémoire ligne par ligne. Illustrer chacun des modes d adressage, par une séquence d instructions qui range l élément (2,2) dans le registre R Registre/registre Les instructions de type MOV permettent d affecter la valeur d un registre à un autre registre. Syntaxe de l instruction MOV : MOV{S}<c> <R d >,#<const> R d const MOV{S}<c> <R d >,R m > R d R m MOVT<c> <R d > #imm R d [16 :31] imm imm est une constante Exercice à faire : Constante/registre Les instructions de type MOV permettent d affecter une constante à un autre registre. Exercice à faire : Écrire pour chacune des opérations suivantes : R6 0x000A avec mise à jour des indicateurs et R5 R6 sans mise à jour des indicateurs. 44

45 Architecture d un ordinateur [Exercices] Exercices séance C/TD2 : Ordinateur : mémoire principal organisation et accès aux données 1. architecture ordinateur 1.1 On considère un ordinateur comprenant un microprocesseur dont le bus d adresse externe est de 32 bits, son bus de données est sur 32 bits. Quelle est la taille en octets de la mémoire adressable par ce microprocesseur? 1.2 On connecte à ce microprocesseur une mémoire de 64 kilo mots de 32 bits. Cette mémoire est adressable par le microprocesseur à une adresse début égale à 0x Donner l adresse du dernier mot long (mot de 32 bits) de cette mémoire. 2. structures de données de type tableau et implantation en mémoire 2.1 On considère une chaîne de caractère «bonjour, il est 8 heures». Cette chaîne peut être mémorisée en code ASCII sous la forme d un tableau à une dimension. On suppose que cette chaîne est mémorisée à l adresse 0x , donner : L adresse du caractère h Quel est la taille de ce tableau Quelle l adresse de Fin + 1 de tableau 2.2 Soit une image en niveaux de gris de taille 4x4 dont les valeurs des pixels sont : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. Ces pixels sont mémorisés en mémoire ligne par ligne. Le pixel (0,0) est stocké à l adresse 0x Donner l adresse : du pixel de valeur 5 du pixel de valeur En utilisant les 3 modes d adressage donné au paragraphe 3.4.1, écrire en langage d assemblage ARM Cortex M3 les séquences suivantes : séquence 1 : lire l élément (0,3) du tableau de l exercice 2.2, lui ajouté la valeur 5 et le ranger dans le registre R3 séquence 2 : lire l élément (0,2), le multiplier par 2 (opération de décalage) et ranger le résultat dans l élément (0,0). Donner l adresse de rangement en hexadécimal séquence 3 : lire l élément (0,3), le diviser par 2 (opération de décalage) et ranger le résultat dans l élément (1,2). 45

46 Boucles et organigrammes [C/TD3] C/TD -3 Unité IGI 1001 Programmation des microprocesseurs Structures de contrôle Boucles : algorithmes et organigrammes 46

47 Boucles et organigrammes [C/TD3] C/TD -3 : Boucles : algorithmes et organigrammes Préparation de la séance : lire le support (page 47 à page 54). Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes, être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. et les appliquer en faisant les exercices. Définitions : Algorithme : «méthode de calcul qui indique la démarche à suivre pour résoudre une série de problèmes équivalents en appliquant dans un ordre précis une suite finie de règles». Il est décrit sous la forme d une suite ordonnée d instructions laquelle définit la démarche proposée pour résoudre le problème étudié. La complexité d un algorithme est le nombre d instructions élémentaires à exécuter pour résoudre le problème. Organigramme : est une représentation graphique d un algorithme. Il met en œuvre des symboles représentant des traitements, des données, des liaisons. Il comprend un début et une fin, et permet de suivre l'ordre d'exécution des instructions de l algorithme pour résoudre le problème étudié. 1 symbole de Début, Fin 2 symbole pour le traitement (Instruction) 3 symbole Entrées/Sorties 4 symbole Décision/Aiguillage NON OUI Pour NON Pour OUI 5 symbole logique : décision/choix/aiguillage 47

48 Boucles et organigrammes [C/TD3] 1. Les structures algorithmiques fondamentales Les opérations élémentaires dont l application permet de résoudre un problème peuvent être organisées en utilisant les structures algorithmiques fondamentales : 1.1. Structure linéaire C est une suite d instructions exécutée dans l ordre énoncé. Exemple 1 : é : C est le titre de l algorithme Sortie : variable somme : entier : somme est le nom du résultat Affectation : le résultat de a+b+c est affecté (recopié) dans somme. Les instructions de l algorithme «somme» s exécutent les unes après les autres dans l ordre où elles on été écrites. Cet algorithme est constitué d un flux de 2 instructions Dans cet algorithme apparaît des variables, elles permettent de donner des noms (appelés identificateurs) à des données (les variables en entrée a et b, de type entier). La variable somme, de type entier sera affectée par le résultat de l addition de a,b,c. Représentation sous la forme organigramme de l algorithme somme : Lire a,b,c Somme a + b + c L exécution séquentielle ci-dessous peut être rompue par des instructions conditionnelles : appelées instructions de contrôle de flux. 48

49 Boucles et organigrammes [C/TD3] 1.2. Structure alternative ou conditionnelle : Si une condition est vraie, on exécute une ou plusieurs instructions. Cette structure permet aussi de traduire des choix possibles. Forme réduite Forme complète Le programme teste une condition, si la condition est satisfaite, le programme exécute «instruction 1», sinon il exécute «instruction 2». Où (condition) est une expression de type booléen comme par exemple. Elle est construite en général avec des comparateurs et les opérateurs logiques et, ou, non. Exemple 2 : Dans cette exemple, cette structure est appelée structure alternative réduite é é 49

50 Boucles et organigrammes [C/TD3] Dans l algorithme de l exemple 2, on distingue : le titre : identifie ce que fait l algorithme, les déclarations : les entrées, ce sont les objets manipulés dans le corps de l algorithme, le corps de l algorithme : ce sont les instructions à exécuter et les commentaires, ils facilitent la lisibilité de l algorithme. Dans les déclarations, les objets peuvent être par exemples : des constantes : la valeur d une constante ne peut être modifiée au cours de l exécution de l algorithme, des variables : leurs valeurs peuvent être modifiées au cours de l exécution de l algorithme. Les constantes et les variables sont identifiées par leur noms, appelés identificateurs et leurs types : entier, réel, booléen, chaîne de caractères. Dans cet exemple on distingue : l instruction qui manipule les données : et l instruction ) qui contrôle son exécution. Exemple 3 : dans cet exemple, la structure alternative est dite complète é Sortie : variable maximum : entier 50

51 Boucles et organigrammes [C/TD3] 1.3. Structure répétitive, structure itérative ou boucle Les itérations permettent d écrire des programmes qui exécutent plusieurs fois les mêmes instructions. Elles permettent de faire des récurrences ou de traiter des volumes importants de données. Les programmes itératifs sont liés à la notion mathématique de récurrence, par exemple la suite de Fibonacci est la suite de nombres définie par la récurrence suivante : Boucle - Tant que. faire Séquence d instructions1 tant que (condition) /*la condition s appelle une condition d arrêt*/ fin tant que Faire «séquence d instruction à répéter» Séquence d instructions2 /* quand la condition devient fausse, le programme exécute la séquence d instructions 2*/ Exemple 4 : calcul de la partie entière inférieure de la racine carrée d un entier donné, il permet de calculer la racine entière d un naturel. é Sortie : variable racine : entier é 51

52 Boucles et organigrammes [C/TD3] Remarque : la vérification de la condition est faite en début de boucle, le corps de la boucle n est exécuté que si la condition est vraie. Dans la boucle faire tant que (voir ci-dessous), la condition est vérifiée en fin de boucle. Le corps de boucle est exécuté au moins une fois. Boucle - répéter jusqu à Exemple 5 : calcul de la multiplication de 2 entiers par additions successives é Sortie : variable produit : entier é Remarque : la vérification de la condition se fait en fin de boucle. Le corps de la boucle est exécuté au moins une fois. 52

53 Boucle - Pour appelée aussi boucle for Boucles et organigrammes [C/TD3] Exemple 6 : calcul de la multiplication de 2 entiers positifs a et b donnés en utilisant l addition entière. é Sortie : variable produit : entier é à Fin pour Remarque : règle à respecter : il est interdit de modifier la variable de boucle dans le corps de la boucle. Cette variable est automatiquement incrémentée à chaque cycle. Le nombre d exécution de la boucle est : (valeur finale de cette variable valeur initiale) Représentation sous formes d organigrammes des structures algorithmiques fondamentales Début Faux Condition Instruction 1 (ou Traitement 1) Vrai Instruction 1 Instruction 2 Instruction 2 (ou Traitement 2) Structure alternative : si ---- alors ---- Fin fsi sinon

54 Boucles et organigrammes [C/TD3] Condition Vrai Vrai Tant que «condition» Faire traitement Fin de tant que Faux Séquence d instructions Séquence répétitive tant que faire Séquence d Instructions Traitement Condition Faux Vrai Séquence répétitive répéter jusqu à répéter «traitement» jusqu à condition 54

55 Exercices [C/TD3] Exercices séance C/TD3 : Structures de contrôle Boucles : algorithmes et organigrammes Exercices à faire : 1. Décrire sous la forme d organigrammes les différents algorithmes des exemples 2 à 6 (page 49 à page 53). 2. Écrire l algorithme qui calcule la division de 2 entiers a et b par soustractions successives. 3. Écrire l algorithme qui calcule la multiplication de 2 entiers par additions successives 4. Écrire l algorithme qui calcul de la somme s n 5. Écrire un algorithme qui calcule y = 6. Écrire l algorithme qui calcule pour un entier positif donné la valeur de (rappel : n! n) 7. Soit 3 variables a, b et c, de type entiers naturels, écrire l algorithme qui calcule le maximum et range le résultat dans la variable appelé max. Donner l organigramme correspondant. 8. même exercice, pour le calcul du minimum, le résultat est rangé dans la variable min. 9. Calcul du maximum : écrire un algorithme qui trouve le plus grand élément d un tableau d entiers de taille et le range dans la variable max. 10. même question pour le calcul du minimum, le plus petit élément est rangé dans la variable min. 11. Calcul du maximum et du minimum d un tableau contenant n entiers : écrire un algorithme qui trouve le plus grand élément et le plus petit élément et les range respectivement dans max et min. 55

56 Boucles et programmation [C/TD4] C/TD 4 Unité IGI 1001 Programmation des microprocesseurs Structures de contrôle Boucles et programmation 56

57 Boucles et programmation [C/TD4] C/TD -4 : Structures de contrôle Boucles et programmation Préparation de la séance : lire le support page 57 à page 59. Les notions/définitions sont accompagnées par des exemples et des exercices à faire. 1. Identifier les notions/définitions importantes et être capable de les expliquer. 2. Refaire les exemples illustrant ces notions. 3. et les appliquer en faisant les exercices. Cette séance est consacrée à la programmation en langage d assemblage ARM Cortex M3 des structures de contrôle et des boucles. Elle répond à la question : comment écrire le programme correspondant à une des structures algorithmiques traitées dans la séance C/TD3. Exemple : Soit 2 variables a et b N (entiers naturels), on suppose que ces variables sont rangées temporairement dans les registres R1 et R2 (respectivement pour a et b). si a = 0 alors sinon b b+1 /* Instruction 1*/ b b+2 /*Instruction 2*/ fsi SI a = 0 l instruction 1 est exécutée. Si a 0 l instruction 2 est exécutée On doit d abord tester si a = 0. Comme a est dans R1, il faut tester si R1=0, cette condition est vérifiée si l indicateur Z = 1. Dans le tableau page 58, le suffixe correspondant à cette condition est EQ. Pour tester si R1 = 0, on peut par exemple le comparer à 0, à l aide de l instruction de comparaison : CMP R1,#0 Cette instruction consiste à faire l opération (R1 0) et à positionner les indicateurs dont l indicateur Z, si celui-ci est égal à 1 alors R1=0. 57

58 Boucles et programmation [C/TD4] Une instruction de branchement conditionnelle permet si la condition spécifiée est vraie d aller exécuter l instruction indiquée par l étiquette (label). CMP R1,#0 BEQ Inst1 /* aller à l étiquette Inst1 si la condition EQ est vraie*/ ADD R2,#2 B fsi /* branchement inconditionnel à l étiquette fsi*/ Inst1 ADD R2,#1 fsi Importante : Les instructions de contrôle changent la valeur de PC (le registre Program Counter contenant l adresse de l instruction à exécuter). Ainsi, lors de l exécution de l instruction BEQ inst1, le registre PC indique l instruction suivante (c'est-à-dire ADD R2,#2) que nous appelons PC courant. Si la condition est vraie, PC PC courant + Inst1, c'est-àdire PC = adresse de l instruction indiquée par l étiquette Inst1. Cette étiquette code le déplacement (saut) à effectuer de l adresse courante pour atteindre l instruction indiquée par l étiquette Inst1. Syntaxe de l instruction de branchement conditionnelle : B<c> <labelt> label (étiquette) identifie l instruction à exécuter si la condition est vraie. <c> désigne le suffixe de la condition à tester : 58

59 Boucles et programmation [C/TD4] Syntaxe de l instruction de comparaison : CMP<c> <R n >,#<const> test de (R d const) et positionne les indicateurs CMP<c> <R n >,<R m >{,<shift>} indicateurs test de (R n shift(r m ) et positionne les Soit à comparer deux 2 entiers a et b : CMP a,b Suffixe du code condition : <c> a et b (entiers naturels) a et b (entiers) a b EQ EQ a b LO MI a b LS LE a b HI GT a b HS GE 59

60 Boucles et programmation [Exercices] Exercices séance C/TD4 : Structures de contrôle Boucles et programmation Écrire pour chaque exercice ci-dessous, le programme en langage d assemblage ARM Cortex M3. Exercices à faire : 1. Exemples 2 à 6 (page 49 à page 53). 2. Calcul de la division de 2 entiers a et b par soustractions successives (a et b sont des entiers naturels sur 8 bits). 3. Calcul de la multiplication de 2 entiers b par additions successives (a et b sont des entiers naturels sur 8 bits). 4. Calcul de la somme s n 5. Calcul de y = 6. Calcul pour un entier positif donné de la valeur de (rappel : n! n) 7. Calcul du maximum de 3 variables a, b et c, de type entiers naturels, écrire l algorithme qui calcule le maximum et range le résultat dans la variable appelé max. 8. même exercice, pour le calcul du minimum, le résultat est rangé dans la variable min. 9. Calcul du maximum : programme trouvant le plus grand élément d un tableau d entiers de taille et le range dans la variable max. 10. même question pour le calcul du minimum, le plus petit élément est rangé dans la variable min. 11. Calcul du maximum et du minimum d un tableau contenant n entiers : programme trouvant le plus grand élément et le plus petit élément et les range respectivement dans max et min. 60

61 Microprocesseurs [TD1] TD1 TD 1 Unité IGI 1001 Programmation des microprocesseurs et simulateur Microprocesseur : Registres internes et transferts de données Calculs arithmétiques et indicateurs 61

62 Microprocesseurs [TD1] TD 1 : Microprocesseur : registres internes transferts de données opérations arithmétiques et indicateurs Les Travaux Dirigés (TD) se déroulent en salle informatique utilisation du simulateur VISION 4sur PC. Il est nécessaire d aller «au bout des choses» : identifier les erreurs, les corriger, programmer soi-même et s autoformer. Exécuter à l aide du simulateur VISION 4 chacun des programmes des exercices cidessous. L exécution instruction par instruction (pas à pas), vous permettra d observer le résultat de chaque instruction (observation des registres, des indicateurs, de la mémoire, le séquencement de votre programme, c'est-à-dire l évolution du registre R15 Program Counter) et aussi le résultat rendu par votre programme : est ce qu il correspond à ce qui est attendu? Partie I : Prise en main du simulateur VISION 4 à l aide du tutorial distribué 62

63 Microprocesseurs [TD1] Le programme ci-dessous, vous permettra de commencer à utiliser le simulateur VISION 4. Vous commencerez par créer un projet, recopier le programme en assembleur et l exécuter pour valider le résultat obtenu. Ce programme très simple permet de distinguer les différentes étapes du simulateur et de les utiliser. Partie II : Exercices à faire à l aide du simulateur VISION 4 Chaque exercice est à faire «à la main» avant de le tester avec le simulateur. Exercices à faire : Opérations arithmétiques et logiques 1. Donner pour chacune des opérations ci-dessous, l instruction en langage assembleur ARM Cortex M3 On traitera le cas des données codées sur 8, 16 puis 32 bits, dans les cas des opérations 1) et 2) uniquement. 1) ) (-3) + (-127) 3) 0xFFFFFFFF ET 0x0000FFFF 4) 0x0000AAAA OU 0x ) 0x OU Exclusif 2. 63

64 Microprocesseurs [TD1] 6) Pour les nombres 0x01F1 et 0xFF85, donner l instruction en langage assembleur pour réaliser chacune des opérations suivantes : Un décalage à gauche de 2 positions Un décalage arithmétique à droite de 2 positions Un décalage logique à droite de 2 positions On supposera pour chaque instruction que les données (les opérandes sources) à traiter sont rangées dans des registres internes du processeur ARM Cortex M3 et que le résultat de l opération est aussi rangé dans un registre. 2. Donner pour chacune de ces instructions réalisant respectivement les opérations de 1) à 7), le résultat attendu, ainsi que l état des indicateurs N, Z, V et C positionnés à Vérifier à l aide du simulateur VISION 4 que le résultat observé correspond à celui attendu. 4. Expliquer l intérêt des opérations : 3), 4) et 5) 64

65 Microprocesseurs [TD2] TD - 2 Unité IGI 1001 Programmation des microprocesseurs et simulateur Microprocesseur : modes d adressage de la mémoire principale et accès aux données 65

66 Microprocesseurs [TD2] TD 2 : Microprocesseur : modes d adressage de la mémoire principale et accès aux données Les Travaux Dirigés (TD) se déroulent en salle informatique utilisation du simulateur VISION 4sur PC. Il est nécessaire d aller «au bout des choses» : identifier les erreurs, les corriger, programmer soi-même et s autoformer. Exécuter à l aide du simulateur VISION 4 chacun des programmes des exercices cidessous. L exécution instruction par instruction (pas à pas), vous permettra d observer le résultat de chaque instruction (observation des registres, des indicateurs, de la mémoire, le séquencement de votre programme, c'est-à-dire l évolution du registre R15 Program Counter) et aussi le résultat rendu par votre programme : est ce qu il correspond à ce qui est attendu? Exercices à faire : On suppose que le contenu de la mémoire en octet à partir de l adresse 0x est le suivant : 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0x01, 0x02,0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09. Le premier élément de cette zone se trouve à l adresse 0x et sa valeur est 0x11 1. Écrire en langage d assemblage ARM Cortex M3 les séquences suivantes (on utilisera pour chaque séquence chacun des 8 modes d adressage de l ARM Cortex M3) et exécuter pas à pas les instructions de ces séquence : séquence 1 : lire le 8 ème élément de cette zone lui ajouter la valeur 5 et le ranger dans le registre R3 séquence 2 : lire le 2 ème élément à partir de l élément de valeur 0x88, le multiplier par 2 (on utilisera une instruction de décalage) et ranger le résultat dans le 1 er élément de la zone d adresse 0x

67 Microprocesseurs [TD3] TD3 TD 3 Unité IGI 1001 Programmation des microprocesseurs et simulateur Structures de contrôle/boucles et programmation 67

68 TD 3 : Structures de contrôles boucles et programmation ARM Cortex M3 Microprocesseurs [TD3] Les Travaux Dirigés (TD) se déroulent en salle informatique utilisation du simulateur VISION 4sur PC. Il est nécessaire d aller «au bout des choses» : identifier les erreurs, les corriger, programmer soi-même et s autoformer. Exécuter à l aide du simulateur VISION 4 chacun des programmes des exercices cidessous. L exécution instruction par instruction (pas à pas), vous permettra d observer le résultat de chaque instruction (observation des registres, des indicateurs, de la mémoire, le séquencement de votre programme, c'est-à-dire l évolution du registre R15 Program Counter) et aussi le résultat rendu par votre programme : est ce qu il correspond à ce qui est attendu? Exercices à faire : 1. les programmes en assembleur ARM Cortex - M3 correspondants aux exemples 2 à 6 (page 49 à page 53). 2. Calcul la division de 2 entiers a et b par soustractions successives (a et b entiers naturels sur 8 bits). 3. Calcul de la multiplication de 2 entiers b par additions successives (a et b entiers naturels sur 8 bits) 4. Calcul de la somme s n 5. Calcul de y = 6. Le calcul pour un entier positif donné de la valeur de (rappel : n! n) 7. Calcul du maximum de 3 variables a, b et c, de type entiers naturels, le résultat est rangé dans la variable appelée max. 8. même exercice, pour le calcul du minimum, le résultat est rangé dans la variable min. 9. Calcul du maximum : programme trouvant le plus grand élément d un tableau d entiers de taille et le range dans la variable max. Le tableau contient n éléments, chaque élément est un entier naturel sur 8 bits. 10. même question pour le calcul du minimum, le plus petit élément est rangé dans la variable min. 68

69 Microprocesseurs [TD3] 11. Calcul du maximum et du minimum d un tableau contenant n entiers naturels codés sur 8 bits : programme trouvant le plus grand et le plus petit élément et les range respectivement dans max et min. 12. faire les exercices 8, 9, 10 et 11 dans les cas suivants : Le tableau contient n entiers, chacun étant codé sur 16 bits Le tableau contient n entiers, chacun étant codé sur 32 bits 69

70 Sous ensemble du jeu d instruction ARM Cortex M3 1. Opérations Arithmétiques ADD: Add values and store result to register Syntax ADD{cond}{S} Rd, Rn, Op2 Description Add Rn and Op2 and store result to Rd. Condition Flags If S is specified update flags: N, Z, C, V. Example ADDS R0,R2,R4 //Add R2 and R4 and store result to R0, update flags ADD R4,R4,#0xFF00 //Add value in 0xFF00 and R4 and store result in R4 Flexible Operand Op2 Several ARM instructions contain an Op2 field that is called flexible operand. Op2 may be one of the following: #imm8_r: 8-bit constant that may be rotated by an even number (0, 2, 4, 6,.., 30). Valid Examples: #0x12, #0xFF, #0x2FC0, #0xC000003F, Invalid Examples: #0x1FF, #0x1FE, #0x1234. Note: the Assembler uses Instruction Substitution (see below) in case that a constant cannot be represented. Rm: CPU register content of Rm. Example: R5 Rm, ASR #n: Content of Rm shifted right with sign extension by #n bits; valid range for #n: Example: R2, ASR #4 Rm, LSL #n: Content of Rm shifted left with zero extension by #n bits; valid range for #n: Example: R3, LSL #8 Rm, LSR #n: Content of Rm shifted right with zero extension by #n bits; valid range for #n: Example: R3, LSR #4 Rm, ROR #n: Content of Rm rotated right by #n bits; valid range for #n: Example: R2, ROR #6 Rm, RRX: Content of Rm rotated right with C-flag extension by one bit. Example: R2, RRX Rm, ASR Rs: Content of Rm shifted right with sign extension by the content of Rs. Example: R2, ASR R3 Rm, LSL Rs: Content of Rm shifted left with zero extension by the content of Rs. Example: R3, LSL R8 Rm, LSR Rs: Content of Rm shifted right with zero extension by the content of Rs. Example: R3, LSR R4 Rm, ROR Rs: Content of Rm rotated right by the content of Rs. Example: R2, ROR R6

71 Sous ensemble du jeu d instruction [Ressources] 2. Instructions arithmétiques The instruction pairs ADD and SUB, ADC and SBC, AND and BIC, MOV and MVN, CMP and CMN, are equivalent except for the inversion or negation of Op2. If an#imm8_r value in Op2 cannot be represented, the ARM Assembler inverts or negates the constant. If this constant can be represented in an#imm8_r value, a complementary instruction is automatically used. ADC: Add with Carry Syntax Description Condition Flags Example ADC{cond}{S} Rd, Rn, Op2 Add Rn and Op2 and Carry flag and store result to Rd. ADC is typical used for multi-word arithmetic. If S is specified update flags: N, Z, C, V. ADDS R0,R2,R4 // add R2 + R4, store result to R0, set flags ADC R1,R3,R5 // add R3 + R5 with carry from previous ADDS, store result to R1 SUB: Subtract registers Syntax Description SUB{cond}{S} Rd, Rn, Op2 subtracts the value of Op2 from the value in Rn. Condition Flags If S is specified update flags: N, Z, C, V. Example SUBS R8,R6,#240 //R8=R6-240 SBC: Subtract with carry Syntax Description SBC{cond}{S} Rd, Rn, Op2 synthesize multiword arithmetic. Condition Flags If S is specified update flags: N, Z, C, V. Example SUBS R0,R2,R4 SUB R4,R4,#5 71

72 Sous ensemble du jeu d instruction [Ressources] MUL: Multiply (32-bit by 32-bit, bottom 32-bit result) Syntax MUL{cond}{S} Rd, Rm, Rs Description multiplies the values from Rm and Rs, and places the least significant 32 bits of the result in Rd. Condition Flags If S is specified: N and Z flags according to the result. the C flag in ARM architecture v4 and earlier will be corrupted. the C flag in ARM architecture v5 and later is not affected. Example MUL R10, R2, R5 //R10:= R2*R5 3. Opérations Logiques : ET, OU, OU Exclusif, opérations de décalage AND: Logical AND operation Syntax Description Condition Flags Example AND{cond}{S} Rd, Rn, Op2 Load Rd with logical AND of Rn with Op2. Rd := Rn AND Op2 If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. AND R9,R2,#0xFF00 // Load R9 with R2 and value in 0xFF00 ORR: Logical OR operation Syntax ORR{cond}{S} Rd, Rn, Op2 Description OR operations on the values in Rn and Op2. Condition Flags If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. Example ORR R2, R0, R5 // Rd = R0 or R5 72

73 Sous ensemble du jeu d instruction [Ressources] EOR: Logical Exclusive OR operation Syntax Description Condition Flags Example EOR {cond}rd, Rn, Op2 performs a logical Exclusive OR operation N and Z flags are updated. The C flag may be updated by calculation of Op2. EORS R0, R0, R3, ROR R6 ASR (Thumb) Arithmetic (signed) Shift Right. The sign bit (bit position 31) is shift in on the right side. Syntax Description Registers Condition Flags Example ASR Rd, Rs ASR Rd, Rm, #imm ASR Rd, Rs Arithmetic shift right value in Rd. Only the low byte in Rs is used as shift value. If shift value is 32, Rd is cleared. If shift value is greater than 32, Rd and C are cleared. ASR Rd, Rm, #imm Arithmetic shift right value in Rm and store result to Rd. #imm specifics a constant shift value in the range Supports only low registers (R0 - R7). Update N and Z; C is unaffected if shift value is zero, otherwise C contains last bit shifted out of Rd. ASR R0,R2,#6 // R0 = (signed) R2 >> 6 ASR R5,R2 // R5 = (signed) R5 >> R2, only the low byte in R2 is used. TEQ: Bitwise Exclusive OR operation, result discarded. Used for conditional operations afterwards Syntax Description TEQ{cond} Rn, Op2 Exclusive OR of the values Rn and Op2. Condition Flags N and Z flags are updated according the result. C flag may be updated during the calculation of Op2. Example TEQS R4, #3 //Test R4 for equality with 3 73

74 Sous ensemble du jeu d instruction [Ressources] TST: Test Syntax Description TST{cond} Rn, Op2 performs a bitwise AND operation on the value in Rn and the value of Op2. This is similar to the ANDS instruction, except that the result is discarded. Condition Flags N and Z flags are updated according the result. C flag may be updated during the calculation of Op2. Example TSTNE r1,r5,asr r1 BIC: Bit Clear Syntax Description BIC{cond}{S} Rd, Rn, Op2 Perform an AND operation on the bits in Rn with the complements of the corresponding bits in the value of Op2 Condition Flags If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. Example R0,R0 #0x1F //Clear mode bits 4. Instruction de comparaison Instruction de branchement conditionnelle CMP: Compare. Used in combination with conditional branch instructions Syntax Description CMP {cond} Rn, Op2 subtracts the value of Op2 from the value in Rn (equals to the SUBS instruction with a discarded result). This instruction updates the condition flags, but do not place a result in a register. Condition Flags N, Z, C and V flags are updated. Example CMP R2, R9 //Subtract value of R9 from R2 74

75 Sous ensemble du jeu d instruction [Ressources] B: Branch to label. Used to jump to a specific program location Syntax Description B{cond} label The jump distance must be within -252 to +258 bytes for conditional and ±2 KBytes for unconditional branch. Condition Flags not modified. Example CMP R1,#10 // compare R10 with #10 BEQ val_ok // jump to label val_ok val_ok: val_err: B val_err // jump to itself (loop forever) 5. Instructions lecture (Load)/écriture (Store) - mémoire LDR: Load 32-bit word to Memory Syntax LDR{cond} Rd, [Rn] LDR{cond} Rd, [Rn, offset] LDR{cond} Rd, [Rn, offset]! LDR{cond} Rd, label LDR{cond} Rd, [Rn], offset Description LDR{cond} Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond} Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond} Rd, [Rn, offset]{!} (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond} Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond} Rd, [R15, offset]. LDR{cond} Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDR R8,[R10] //loads r8 from the address in r10. LDRNE R2,[R5,#960]! //(conditionally) loads r2 from a word 960 bytes above the address in r5, and increments r5 by 960. LDR R0,localdata //loads a word located at label localdata 75

76 Sous ensemble du jeu d instruction [Ressources] LDRB: Load register byte value to Memory Syntax LDR{cond}B Rd, [Rn] LDR{cond}B Rd, [Rn, offset] LDR{cond}B Rd, [Rn, offset]! LDR{cond}B Rd, label LDR{cond}B Rd, [Rn], offset Description LDR{cond}B Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond}B Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}B Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}B Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}B Rd, [R15, offset]. LDR{cond}B Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDR r8,[r10] //loads r8 from the address in r10. LDRNE r2,[r5,#960]! //(conditionally) loads r2 from a word //960 bytes above the address in r5, and //increments r5 by 960. STR r2,[r9,#consta-struc] //consta-struc is an expression evaluating //to a constant in the range STRB r0,[r3,-r8,asr #2] //stores the least significant byte from //r0 to a byte at an address equal to //contents(r3) minus contents(r9)/4. //r3 and r8 are not altered. STR r5,[r7],#-8 //stores a word from r5 to the address //in r7, and then decrements r7 by 8. LDR r0,localdata //loads a word located at label local data 76

77 Sous ensemble du jeu d instruction [Ressources] LDRH: Load register 16-bit halfword value to Memory. The address must be even for halfword transfers Syntax LDR{cond}H Rd, [Rn] LDR{cond}H Rd, [Rn, offset] LDR{cond}H Rd, [Rn, offset]! LDR{cond}H Rd, label LDR{cond}H Rd, [Rn], offset Description LDR{cond}H Rd, [Rn] (Zero offset) Rn is used as address value. LDR{cond}H Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}H Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}H Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}H Rd, [R15, offset] LDR{cond}H Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDREQSH r11,[r6] //(conditionally) loads r11 with a 16-bit halfword //from the address in r6. Sign extends to 32 bits. LDRH r1,[r0,#22] //load r1 with a 16 bit halfword from 22 bytes //above the address in r0. Zero extend to 32 bits. STRH r4,[r0,r1]! //store the least significant halfword from r4 //to two bytes at an address equal to contents(r0) //plus contents(r1). Write address back into r0. LDRSB r6,constf //load a byte located at label constf. Sign extend. 77

78 Sous ensemble du jeu d instruction [Ressources] LDRD: Load register pair Rd and Rd+1 with double word (64-bit) value. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax CPU LDR{cond}D Rd, [Rn] LDR{cond}D Rd, [Rn, offset] LDR{cond}D Rd, [Rn, offset]! LDR{cond}D Rd, label LDR{cond}D Rd, [Rn], offset ARM9E only Description LDR{cond}D Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond}D Rd, [Rn, offset] (pre-index offset) Rn and offset are added and used as address value. LDR{cond}D Rd, [Rn, offset]! (pre-index offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}D Rd, label (pre-index with PC relative offset) The assembler calculates the PC offset and generates LDR{cond}D Rd, [R15, offset] LDR{cond}D Rd, [Rn], offset (post-index offset with update) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDRD R6,[R11] //Load R6 and R7 and use R11 as address value 78

79 Sous ensemble du jeu d instruction [Ressources] MOV: Move constant or register to register. This instruction is also used for shift operations Syntax Description MOV{cond}{S} Rd, Op2 copies the value of Op2 into Rd. Condition Flags If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. Example MOV R5,#0x20 // load R5 with the constant 0x20 MOV R2,R3 // load R2 with the value in R3 MOV R4,R5, SHL #4 // load R4 with the value in R5 shift left by 4 bits LDRD: Load register pair Rd and Rd+1 with double word (64-bit) value. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax CPU LDR{cond}D Rd, [Rn] LDR{cond}D Rd, [Rn, offset] LDR{cond}D Rd, [Rn, offset]! LDR{cond}D Rd, label LDR{cond}D Rd, [Rn], offset ARM9E only Description LDR{cond}D Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond}D Rd, [Rn, offset] (pre-index offset) Rn and offset are added and used as address value. LDR{cond}D Rd, [Rn, offset]! (pre-index offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}D Rd, label (pre-index with PC relative offset) The assembler calculates the PC offset and generates LDR{cond}D Rd, [R15, offset] LDR{cond}D Rd, [Rn], offset (post-index offset with update) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDRD R6,[R11] //Load R6 and R7 and use R11 as address value 79

80 Sous ensemble du jeu d instruction [Ressources] STRD: Store register pair Rd and Rd+1 with double word (64-bit) value. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax CPU STR{cond}D Rd, [Rn] STR{cond}D Rd, [Rn, offset] STR{cond}D Rd, [Rn, offset]! STR{cond}D Rd, label STR{cond}D Rd, [Rn], offset ARM9E only Description STR{cond}D Rd, [Rn] (zero offset) Rn is used as address value. STR{cond}D Rd, [Rn, offset] (pre-index offset) Rn and offset are added and used as address value. STR{cond}D Rd, [Rn, offset]! (pre-index offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. STR{cond}D Rd, label (pre-index with PC relative offset) The assembler calculates the PC offset and generates STR{cond}D Rd, [R15, offset] STR{cond}D Rd, [Rn], offset (post-index offset with update) Rn is used as address value. After memory transfer, the offset is added to Rn. Example STRD R4,[R9,#24] //Store R4 in R

81 Sous ensemble du jeu d instruction [Ressources] LDRD: Load register pair Rd and Rd+1 with double word (64-bit) value. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax CPU LDR{cond}D Rd, [Rn] LDR{cond}D Rd, [Rn, offset] LDR{cond}D Rd, [Rn, offset]! LDR{cond}D Rd, label LDR{cond}D Rd, [Rn], offset ARM9E only Description LDR{cond}D Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond}D Rd, [Rn, offset] (pre-index offset) Rn and offset are added and used as address value. LDR{cond}D Rd, [Rn, offset]! (pre-index offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}D Rd, label (pre-index with PC relative offset) The assembler calculates the PC offset and generates LDR{cond}D Rd, [R15, offset] LDR{cond}D Rd, [Rn], offset (post-index offset with update) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDRD R6,[R11] //Load R6 and R7 and use R11 as address value 81

82 Sous ensemble du jeu d instruction [Ressources] STRD: Store register pair Rd and Rd+1 with double word (64-bit) value. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax CPU STR{cond}D Rd, [Rn] STR{cond}D Rd, [Rn, offset] STR{cond}D Rd, [Rn, offset]! STR{cond}D Rd, label STR{cond}D Rd, [Rn], offset ARM9E only Description STR{cond}D Rd, [Rn] (zero offset) Rn is used as address value. STR{cond}D Rd, [Rn, offset] (pre-index offset) Rn and offset are added and used as address value. STR{cond}D Rd, [Rn, offset]! (pre-index offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. STR{cond}D Rd, label (pre-index with PC relative offset) The assembler calculates the PC offset and generates STR{cond}D Rd, [R15, offset] STR{cond}D Rd, [Rn], offset (post-index offset with update) Rn is used as address value. After memory transfer, the offset is added to Rn. Example STRD R4,[R9,#24] //Store R4 in R

83 Sous ensemble du jeu d instruction [Ressources] LDRH: Load register 16-bit halfword value to Memory. The address must be even for halfword transfers Syntax LDR{cond}H Rd, [Rn] LDR{cond}H Rd, [Rn, offset] LDR{cond}H Rd, [Rn, offset]! LDR{cond}H Rd, label LDR{cond}H Rd, [Rn], offset Description LDR{cond}H Rd, [Rn] (Zero offset) Rn is used as address value. LDR{cond}H Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}H Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}H Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}H Rd, [R15, offset] LDR{cond}H Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDREQSH r11,[r6] //(conditionally) loads r11 with a 16-bit halfword //from the address in r6. Sign extends to 32 bits. LDRH r1,[r0,#22] //load r1 with a 16 bit halfword from 22 bytes //above the address in r0. Zero extend to 32 bits. STRH r4,[r0,r1]! //store the least significant halfword from r4 //to two bytes at an address equal to contents(r0) //plus contents(r1). Write address back into r0. LDRSB r6,constf //load a byte located at label constf. Sign extend. 83

84 Sous ensemble du jeu d instruction [Ressources] LDRSH: Load register signed halfword from Memory. The address must be even for halfword transfers Syntax LDR{cond}SH Rd, [Rn] LDR{cond}SH Rd, [Rn, offset] LDR{cond}SH Rd, [Rn, offset]! LDR{cond}SH Rd, label LDR{cond}SH Rd, [Rn], offset Description LDR{cond}SH Rd, [Rn] (Zero offset) Rn is used as address value. LDR{cond}SH Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}SH Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}SH Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}SH Rd, [R15, offset] LDR{cond}SH Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDREQSH r11,[r6] //(conditionally) loads r11 with a 16-bit halfword //from the address in r6. Sign extends to 32 bits. LDRH r1,[r0,#22] //load r1 with a 16 bit halfword from 22 bytes //above the address in r0. Zero extend to 32 bits. STRH r4,[r0,r1]! //store the least significant halfword from r4 //to two bytes at an address equal to contents(r0) //plus contents(r1). Write address back into r0. LDRSB r6,constf //load a byte located at label constf. Sign extend. 84

85 Sous ensemble du jeu d instruction [Ressources] STRH: Store register 16-bit halfword value to Memory. The address must be even for halfword transfers Syntax STR{cond}H Rd, [Rn] STR{cond}H Rd, [Rn, offset] STR{cond}H Rd, [Rn, offset]! STR{cond}H Rd, label STR{cond}H Rd, [Rn], offset Description STR{cond}H Rd, [Rn] (zero offset) Rn is used as address value. STR{cond}H Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. STR{cond}H Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The address value is written to Rn. STR{cond}H Rd, label (Program relative) The assembler calculates the PC offset and generates STR{cond}H Rd, [R15], offset. STR{cond}H Rd, [Rn], offset (post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example STRH r4,[r0,r1]! //store the least significant halfword from r4 //to two bytes at an address equal to contents(r0) //plus contents(r1). Write address back into r0. 85

86 Sous ensemble du jeu d instruction [Ressources] LDRB: Load register byte value to Memory Syntax LDR{cond}B Rd, [Rn] LDR{cond}B Rd, [Rn, offset] LDR{cond}B Rd, [Rn, offset]! LDR{cond}B Rd, label LDR{cond}B Rd, [Rn], offset Description LDR{cond}B Rd, [Rn] (zero offset) Rn is used as address value. LDR{cond}B Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}B Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}B Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}B Rd, [R15, offset]. LDR{cond}B Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDR r8,[r10] //loads r8 from the address in r10. LDRNE r2,[r5,#960]! //(conditionally) loads r2 from a word //960 bytes above the address in r5, and //increments r5 by 960. STR r2,[r9,#consta-struc] //consta-struc is an expression evaluating //to a constant in the range STRB r0,[r3,-r8,asr #2] //stores the least significant byte from //r0 to a byte at an address equal to //contents(r3) minus contents(r9)/4. //r3 and r8 are not altered. STR r5,[r7],#-8 //stores a word from r5 to the address //in r7, and then decrements r7 by 8. LDR r0,localdata //loads a word located at label localdata 86

87 Sous ensemble du jeu d instruction [Ressources] LDRSB: Load register signed byte value to Memory. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax LDR{cond}SB Rd, [Rn] LDR{cond}SB Rd, [Rn, offset] LDR{cond}SB Rd, [Rn, offset]! LDR{cond}SB Rd, label LDR{cond}SB Rd, [Rn], offset Description LDR{cond}SB Rd, [Rn] (Zero offset) Rn is used as address value. LDR{cond}SB Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. LDR{cond}SB Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. LDR{cond}SB Rd, label (Program-relative) The assembler calculates the PC offset and generates LDR{cond}SB Rd, [R15, offset] LDR{cond}SB Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDREQSH r11,[r6] //(conditionally) loads r11 with a 16-bit halfword //from the address in r6. Sign extends to 32 bits. LDRH r1,[r0,#22] //load r1 with a 16 bit halfword from 22 bytes //above the address in r0. Zero extend to 32 bits. STRH r4,[r0,r1]! //store the least significant halfword from r4 //to two bytes at an address equal to contents(r0) //plus contents(r1). Write address back into r0. LDRSB r6,constf //load a byte located at label constf. Sign extend. 87

88 Sous ensemble du jeu d instruction [Ressources] STRB: Store register byte value to Memory. Only the registers R0, R2, R4, R6, R8, R10, R12 are supported as Rd Syntax STR{cond}B Rd, [Rn] STR{cond}B Rd, [Rn, offset] STR{cond}B Rd, [Rn, offset]! STR{cond}B Rd, label STR{cond}B Rd, [Rn], offset Description STR{cond}B Rd, [Rn] (zero offset) Rn is used as address value. STR{cond}B Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. STR{cond}B Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The address value is written to Rn. STR{cond}B Rd, label (Program-relative) The assembler calculates the PC offset and generates STR{cond}B Rd, [R15, offset]. STR{cond}B Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example STRB R8,[R10] // store r8 to memory address in r10. CMP R2,#10 // compare R2 with 10 STRNEB R2,[R5,#960]! // if R2 is not 10, store R2 to R5+960 and update the R5 with this address value 88

89 Sous ensemble du jeu d instruction [Ressources] MOV: Move constant or register to register. This instruction is also used for shift operations Syntax Description MOV{cond}{S} Rd, Op2 copies the value of Op2 into Rd. Condition Flags If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. Example MOV R5,#0x20 // load R5 with the constant 0x20 MOV R2,R3 // load R2 with the value in R3 MOV R4,R5, SHL #4 // load R4 with the value in R5 shift left by 4 bits MVN : Load register with inverted value Syntax Description MVN{cond}{S} Rd, Op2 takes the value of Op2, performs a bitwise logical NOT operation on the value, and places the result into Rd. Condition Flags If S is specified, N, Z flags are updated. C flag may be updated by calculation of Op2. Example MVNE r11, #0xF000000B STM: Store multiple registers Syntax Description STM{cond}mode Rn{!}, reglist{^} Stores any subset of the currently visible registers. This instruction supports all possible stacking modes, maintaining full or empty stacks which can grow up or down memory, and they are very efficient instructions for saving or restoring context, or for moving large blocks of data around main memory. Condition Flags If S is specified update flags: N, Z, C, V. Example STMDB r1!,{r3-r6,r11,r12} STMFD r13!,{r0,r4-r7,lr} ; Push registers including the stack pointer 89

90 Sous ensemble du jeu d instruction [Ressources] STR: Store register 32-bit words to Memory. The address must be 32-bit word-aligned Syntax STR{cond} Rd, [Rn] STR{cond} Rd, [Rn, offset] STR{cond} Rd, [Rn, offset]! STR{cond} Rd, label STR{cond} Rd, [Rn], offset Description STR{cond} Rd, [Rn] (zero offset) Rn is used as address value. STR{cond} Rd, [Rn, offset] (Pre-indexed offset) Rn and offset are added and used as address value. STR{cond} Rd, [Rn, offset]! (Pre-indexed offset with update) Rn and offset are added and used as address value. The new address value is written to Rn. STR{cond} Rd, label (Program-relative) The assembler calculates the PC offset and generates STR{cond} Rd, [R15], offset. STR{cond} Rd, [Rn], offset (Post-indexed offset) Rn is used as address value. After memory transfer, the offset is added to Rn. Example LDR r8,[r10] //loads r8 from the address in r10. LDRNE r2,[r5,#960]! //(conditionally) loads r2 from a word //960 bytes above the address in r5, and //increments r5 by 960. STR r2,[r9,#consta-struc] //consta-struc is an expression evaluating //to a constant in the range STRB r0,[r3,-r8,asr #2] //stores the least significant byte from //r0 to a byte at an address equal to //contents(r3) minus contents(r9)/4. //r3 and r8 are not altered. STR r5,[r7],#-8 //stores a word from r5 to the address //in r7, and then decrements r7 by 8. LDR r0,localdata //loads a word located at label localdata 90

91 Sous ensemble du jeu d instruction [Ressources] SWP: Swap content of 32-bit word between register and memory Syntax SWP{cond} Rd, Rm, [Rn] Description Swap data between registers and memory. Example SWP R2,R3,[R4] // Load R2 with 32-bit word at address in R4 and store R3 to this memory location CMP R0,#55H // Compare R0 with 0x55, if equal SWPEQ R0,R0,[R1] // exchange memory content at address R1 with register R0 Note Non word-aligned addresses are handled in exactly the same way as an LDR and an STR instruction. SWPB: Swap content of a byte between register and memory Syntax SWP{cond}B Rd, Rm, [Rn] Description Swap data between registers and memory. Example SWPB R2,R3,[R4] // Load R2 with unsigned byte at address in R4 and store R3 to this memory location CMP R0,#55H // Compare R0 with 0x55, if equal SWPEQB R0,R0,[R1] // exchange memory content at address R1 with byte in register R0 LDM: Load multiple registers from memory Syntax Description LDM{cond}mode Rn{!}, reglist{^} Loads any subset of the currently visible registers. This instruction supports all possible stacking modes, maintaining full or empty stacks which can grow up or down memory, and they are very efficient instructions for saving or restoring context, or for moving large blocks of data around main memory. Condition Flags If S is specified, N, Z, C and V flags are updated. Example LDMFD R13!, {R0,R4-R7,PC} //Pop the registers and return from subroutine 91

92 Sous ensemble du jeu d instruction [Ressources] STM: Store multiple registers Syntax Description STM{cond}mode Rn{!}, reglist{^} Stores any subset of the currently visible registers. This instruction supports all possible stacking modes, maintaining full or empty stacks which can grow up or down memory, and they are very efficient instructions for saving or restoring context, or for moving large blocks of data around main memory. Condition Flags If S is specified update flags: N, Z, C, V. Example STMDB r1!,{r3-r6,r11,r12} STMFD r13!,{r0,r4-r7,lr} ; Push registers including the stack pointer 92

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) [email protected] Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Codage d information. Codage d information : -Définition-

Codage d information. Codage d information : -Définition- Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Logiciel de Base. I. Représentation des nombres

Logiciel de Base. I. Représentation des nombres Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) [email protected] I. Représentation des nombres Codage et représentation de l'information Information externe formats

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

ASR1 TD7 : Un microprocesseur RISC 16 bits

ASR1 TD7 : Un microprocesseur RISC 16 bits {Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit

Plus en détail

Les opérations binaires

Les opérations binaires Les opérations binaires Compétences associées A2 : Analyser et interpréter une information numérique Objectifs Etre capable: - De coder les nombres entiers en code complément à 2. - De résoudre les opérations

Plus en détail

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected]

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com haouaticpge@gmail.com Partie 1 Professeur : Haouati Abdelali CPGE Lycée Omar Ibn Lkhattab - Meknès www.haouati.com [email protected] Partie I : Généralités et algorithmique de base 1. Environnement matériel et logiciel

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Architecture de l ordinateur

Architecture de l ordinateur Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

Plus en détail

GPA770 Microélectronique appliquée Exercices série A

GPA770 Microélectronique appliquée Exercices série A GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Jeu d instructions NIOS II

Jeu d instructions NIOS II Jeu d instructions NIOS II 1 Formats d instructions Le processeur NIOS II a un jeu d instructions de type RISC. Il possède 32 registres de 32 bits, notés r0 à r31, avec r0 0. Les instructions sont de longueur

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

IFT1215 Introduction aux systèmes informatiques

IFT1215 Introduction aux systèmes informatiques Introduction aux circuits logiques de base IFT25 Architecture en couches Niveau 5 Niveau 4 Niveau 3 Niveau 2 Niveau Niveau Couche des langages d application Traduction (compilateur) Couche du langage d

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96 Assembleur i8086 Philippe Preux IUT Informatique du Littoral Année universitaire 95 96 1 Avertissement Ce document décrit le langage d assemblage étudié et utilisé dans le cadre des TP d architecture.

Plus en détail

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

ET LO GICIEL D UN S YS T EME IN FORMATIQUE C HAPIT RE 0 : ENVIRONNEMENT MATE RI EL ET LO GICIEL D UN S YS T EME IN FORMATIQUE Objectifs : 1. Présenter l ensemble des ressources physiques et logicielles d un système informatique. 2. Comprendre la

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas [email protected] Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

1 Introduction au codage

1 Introduction au codage CélestineOscarDésiréAnatoleGastonEugène 1 Introduction au codage 1.1 Les ensembles L ensemble de tout les ensembles est Dieu lui-même. Kantor Ensemble des parties d un ensemble désigne l ensemble des sous-ensembles

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Une version javascript sera disponible directement dans le cours prochainement.

Une version javascript sera disponible directement dans le cours prochainement. Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3 8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Structure de base d un ordinateur

Structure de base d un ordinateur Structure de base d un ordinateur 1-Définition de l ordinateur L ordinateur est un appareil électronique programmable qui traite automatiquement les informations. Il est constitué de l unité centrale et

Plus en détail

Organisation des Ordinateurs

Organisation des Ordinateurs Organisation des Ordinateurs Bernard Boigelot E-mail : [email protected] URL : http://www.montefiore.ulg.ac.be/~boigelot/ http://www.montefiore.ulg.ac.be/~boigelot/cours/org/ 1 Chapitre 1 Les

Plus en détail

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT Les portes logiques Nous avons jusqu ici utilisé des boutons poussoirs et une lampe pour illustrer le fonctionnement des opérateurs logiques. En électronique digitale, les opérations logiques sont effectuées

Plus en détail

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques. Logique binaire I. L'algèbre de Boole L'algèbre de Boole est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques.

Plus en détail

Architecture des ordinateurs Introduction à l informatique

Architecture des ordinateurs Introduction à l informatique Architecture des ordinateurs Introduction à l informatique 17 septembre 2004 1 2 3 4 5 6 Les interrupteurs... 0V 5V Ce sont des composants électroniques qui laissent pser un courant principal lorsque la

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

TD : Codage des images

TD : Codage des images TD : Codage des images Les navigateurs Web (Netscape, IE, Mozilla ) prennent en charge les contenus textuels (au format HTML) ainsi que les images fixes (GIF, JPG, PNG) ou animée (GIF animée). Comment

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Exécution des instructions machine

Exécution des instructions machine Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]

Plus en détail

Programmation assembleur : aperçu

Programmation assembleur : aperçu Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal

Plus en détail

PIC : COURS ASSEMBLEUR

PIC : COURS ASSEMBLEUR PIC : COURS ASSEMBLEUR I) Fonctions de base d une machine informatique Contenir de façon permanente les tâches à exécuter (mémoire programme) en ROM ou sur support magnétique. Contenir de façon temporaire

Plus en détail

Leçon 1 : Les principaux composants d un ordinateur

Leçon 1 : Les principaux composants d un ordinateur Chapitre 2 Architecture d un ordinateur Leçon 1 : Les principaux composants d un ordinateur Les objectifs : o Identifier les principaux composants d un micro-ordinateur. o Connaître les caractéristiques

Plus en détail

Concevoir son microprocesseur

Concevoir son microprocesseur Concevoir son microprocesseur structure des systèmes logiques Jean-Christophe Buisson Collection Technosup Ellipses Avant-propos Ce livre s adresse aux étudiants en informatique de licence et maîtrise,

Plus en détail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

Plus en détail

Rappels Entrées -Sorties

Rappels Entrées -Sorties Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C [email protected] ibrahimguelzim.atspace.co.uk

Plus en détail

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre Assembleur Faculté I&C, André Maurer, Claude Petitpierre INTRODUCTION Logiciel utilisé Faculté I&C, André Maurer, Claude Petitpierre MEMOIRE Mémoire Faculté I&C, André Maurer, Claude Petitpierre Mémoire

Plus en détail

Architecture des Ordinateurs. Partie II:

Architecture des Ordinateurs. Partie II: Architecture des Ordinateurs Partie II: Le port Floppy permet le raccordement du lecteur de disquette àla carte mère. Remarque: Le lecteur de disquette a disparu il y a plus de 6 ans, son port suivra.

Plus en détail

Système binaire. Algèbre booléenne

Système binaire. Algèbre booléenne Algèbre booléenne Système binaire Système digital qui emploie des signaux à deux valeurs uniques En général, les digits employés sont 0 et 1, qu'on appelle bits (binary digits) Avantages: on peut utiliser

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que CQP 112 Introduc/on à la programma/on Thème 2 : Architecture d un système informa/que Département d informa/que CQP 112 : Introduc/on à la programma/on Plan 1. Historique des ordinateurs 2. Composants

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Structure d un programme

Structure d un programme Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé

Plus en détail

Chapitre 10 Arithmétique réelle

Chapitre 10 Arithmétique réelle Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

CONFIGURATION DE L AUTOMATE SIEMENS

CONFIGURATION DE L AUTOMATE SIEMENS CONFIGURATION DE L AUTOMATE SIEMENS Créer un projet Dans le bureau de Windows, double-cliquer sur l icône «SIMATIC Manager» : Cliquer ensuite sur l icône «nouveau» : Choisir un nom de projet et valider

Plus en détail

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007 Introduction à l architecture des ordinateurs Adrien Lebre Décembre 2007 Plan - partie 1 Vue d ensemble La carte mère Le processeur La mémoire principal Notion de bus Introduction à l architecture des

Plus en détail

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation

Plus en détail

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB) Base de l'informatique Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB) Généralité Comment fonctionne un ordinateur? Nous définirons 3 couches Le matériel

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

LOGICIEL DC4D MONITOR

LOGICIEL DC4D MONITOR THQtronic LOGICIEL DC4D MONITOR La communication entre PC et DC4D ne peut se faire qu à l aide du câble de liaison USB-TTL de FTDI référence TTL-232R-5V-AJ vendu en option. DC4D Monitor est la même application

Plus en détail

Langages et Concepts de Programmation Introduction à la programmation en langage C

Langages et Concepts de Programmation Introduction à la programmation en langage C Langages et Concepts de Programmation Introduction à la programmation en langage C Cours 1A 2013-2014 Jean-Jacques Girardot, Marc Roelens [email protected], [email protected] Septembre 2013 École Nationale

Plus en détail

IFT2880 Organisation des ordinateurs et systèmes

IFT2880 Organisation des ordinateurs et systèmes Représentation des nombres flottants Notation exponentielle Représentations équivalentes dans la base 10 de 1,234 1 2 3, 4 0 0. 0 x 1 0-2 1 2, 3 4 0. 0 x 1 0-1 1, 2 3 4. 0 x 1 0 1 2 3. 4 x 1 0 1 2. 3 4

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Table des matières. Introduction....3 Mesures et incertitudes en sciences physiques

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 [email protected] PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un ESZ Introduction à l informatique et à l environnement de travail Éric Gaul (avec la collaboration de Dominic Boire) Partie 1: Concepts de base Ordinateur Logiciel Mémoire Données Entrées/sorties Périphériques

Plus en détail

ELP 304 : Électronique Numérique. Cours 1 Introduction

ELP 304 : Électronique Numérique. Cours 1 Introduction ELP 304 : Électronique Numérique Cours 1 Introduction Catherine Douillard Dépt Électronique Les systèmes numériques : généralités (I) En électronique numérique, le codage des informations utilise deux

Plus en détail

Chapitre 1 Introduction à la technologie des ordinateurs 1.1 DEFINITION DE L INFORMATIQUE L informatique (de information et automatique) est la «science du traitement rationnel (fondée sur la raison, conforme

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est: Travaux Pratiques 3. IFT 1002/IFT 1005. Structure Interne des Ordinateurs. Département d'informatique et de génie logiciel. Université Laval. Hiver 2012. Prof : Bui Minh Duc. Tous les exercices sont indépendants.

Plus en détail