Introduction. Architecture générale. Chapitre 1. Langage d'assemblage 05/03/2015 UAL. Mémoire. Circuits de contrôle. Registres (CP, RI, etc)

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

Rappels d architecture

Jeu d instructions NIOS II

Compilation (INF 564)

CM2 L architecture MIPS32

Microprocesseur + Logiciel

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

Conception de circuits numériques et architecture des ordinateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

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

Les opérations binaires

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

Programmation assembleur : aperçu

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


Cours Informatique 1. Monsieur SADOUNI Salheddine

Informatique Générale

Représentation des Nombres

Rappels Entrées -Sorties

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Exécution des instructions machine

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

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

IV- Comment fonctionne un ordinateur?

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

Architecture des ordinateurs

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)

TD Architecture des ordinateurs. Jean-Luc Dekeyser

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

IFT1215 Introduction aux systèmes informatiques

Logiciel de Base. I. Représentation des nombres

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Architecture de l ordinateur

Une version javascript sera disponible directement dans le cours prochainement.

Représentation d un entier en base b

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

Sujets de Travaux Dirigés et de Travaux Pratiques Pascal Ballet, Philippe Le Parc et François Monin

Conversion d un entier. Méthode par soustraction

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Fonctionnement et performance des processeurs

Claude Delannoy. 3 e édition C++

Logiciel de base. Première année ENSIMAG

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Architecture des Ordinateurs. Partie II:

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

Licence Sciences et Technologies Examen janvier 2010

Algorithme. Table des matières

Jeux de caracte res et encodage (par Michel Michaud 2014)

PIC : COURS ASSEMBLEUR

Programmation en langage C

V- Manipulations de nombres en binaire

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

Les fonctions logiques

IFT2880 Organisation des ordinateurs et systèmes

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Architecture : Circuits numériques et éléments d architecture

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Structure d un programme

Plan du cours. Historique du langage Nouveautés de Java 7

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Prentice Hall, 2011 (ISBN )

Architecture des ordinateurs Introduction à l informatique

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

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

Le Ro le Hyper V Troisie me Partie Haute disponibilite des machines virtuelles

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

LOGICIEL DC4D MONITOR

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

Architecture des ordinateurs

UE C avancé cours 1: introduction et révisions

Manuel de référence du langage Exemples Les aventures de Docteur R.

MANUELS NUMÉRIQUES PROCÉDURE DE TÉLÉCHARGEMENT

Initiation à la programmation en Python

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Conventions d écriture et outils de mise au point

QUESTION 1 {2 points}

Cours d initiation à la programmation en C++ Johann Cuenin

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

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Les chaînes de caractères

Tout savoir sur le matériel informatique

Cours 3 : L'ordinateur

Cours d Algorithmique et de Langage C v 3.0

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Concept de machine virtuelle

Système binaire. Algèbre booléenne

Introduction à l algorithmique et à la programmation M1102 CM n 3

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

as Architecture des Systèmes d Information

INF 321 : mémento de la syntaxe de Java

Chapitre 10 Arithmétique réelle

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

Architecture matérielle des systèmes informatiques

Transcription:

Chapitre 1 Introduction Langage d'assemblage Architecture générale Circuits de contrôle Registres (CP, RI, etc) UAL Mémoire Bus d adresses Bus de données 1

Le 68000 (Motorola) ~68000 composants (transistors) (Intel Core i5 > 1 milliard de transistor) Processeur CISC (1979) Grand jeu d'instructions; opérandes dans les registres et/ou en mémoire 14 modes d'adressage, taille d'instruction varie selon le mode Registres de données et d'adresses, séparés. Adresses sur 24bits 16M octets adressables Données sur 16bits 64 broches ALU de 16bits 18 registres 2 modes: superviseur et utilisateur. 1 seul registre Le 68000: les registres 8 registres de données D7..D0 7 registres d adresse A6..A0 3 registres spéciaux PC (compteur ordinal 32 bits) SR (registre d'état 16 bits, l'octet de poids faible est appelé CCR: Condition Code Register) USP (pointeur de pile utilisateur 32 bits) (A7) SSP (pointeur de pile superviseur 32 bits) (A7) 2

Le 68000: les registres (2) Utilisation du 68000 Mac 512-K Sega Megadrive Texas instr TI-92 Atari ST Calcul des règles de pilotage A320 3

Les CPUs vendues Catégories de puce Embarqués 4 bits 2000 Embarqués 8 bits 4700 Embarqués 16 bits Embarqués 32 bits Unités vendues (millions*) 700 400 DSP 600 En 2004: 14 milliards de processeurs pour l embarqué (microprocesseur, microcontrôleur, DSP, etc.) 260 millions de processeurs PC. Moins de 2% (5%) des processeurs vendu sont pour les PC, 98% (95%) pour l embarqué Prix moyen d un processeur 6$ (2004) alors qu un processeur PC coute 300$. Le marché du processeur PC est de très faible volume mais très lucratif Desktop 32/64 bits 150 *(vielle source: D. Tannenhouse (directeur de recherche Intel) RTSS 99, 12/99. Les CPU utilisées dans l embarqué Famille 32 bits ARM 151 Motorola 68K 94 MIPS 57 Hitachi SuperH 33 x86 29 PowerPC 10 Intel i960 8 SPARC 3 AMD 29K 2 Unités vendues (millions*) *source: T. R Halfhill. Embedded market Breaks New Ground Microprocessor Report Jan 2000 4

Quelques instructions (exemples Motorola 68000) Copie de données (MOVE) Opérations arithmétiques (ADD, SUB, MULS, DIVS) Branchements inconditionnels (BRA) Branchements conditionnels (BEQ) Introduction Adresses et constantes Exemple d'adresse: 124 Exemple de constante: #124 Introduction 5

Exemple MOVE MOVE.L 124, 132 Mettre dans la case numéro 132 une valeur identique à celle qui se trouve dans la case numéro 124. Introduction Exemple MOVE MOVE.L 124, 132 Copier à l'adresse 132 la valeur se trouvant à l'adresse 124 adresse @ Introduction 6

Exemple MOVE MOVE.L #124, 132 Mettre la valeur 124 dans la case numéro 132 (ayant pour adresse 132) Introduction Exemple ADD ADD.L #124, 132 Aller chercher la valeur se trouvant trouvant à l'@ 132 Ajouter 124 à cette valeur Ranger le résultat à l'@ 132 Introduction 7

Exemple BRA SUITE: ADD.L #1,132 ; instruction 1 BRA SUITE ; instruction 2 ADD.L #1,132 ; instruction 3 L'instruction 3 n'est pas exécutée Introduction Noter la présentation du programme. Utiliser les tabulations pour aligner. Exemple BEQ SUITE: MOVE.L #2,120 ; instruction 1 SUB.L #2,120 ; instruction 2 BEQ SUITE ; instruction 3 ADD.L #1,132 ; instruction 4 L'instruction 4 n'est pas exécutée Introduction BEQ: Branchement si égal 0 (si la valeur précédemment produite vaut 0) 8

Exemple BEQ SUITE: MOVE.L #3,120 ; instruction 1 SUB.L #2,120 ; instruction 2 BEQ SUITE ; instruction 3 ADD.L #1,132 ; instruction 4 L'instruction 4 est exécutée Introduction Un ";" indique un commentaire jusqu'à la fin de la ligne Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L #1,D1 BNE BCLE Introduction RTS 9

Exemple de programme Introduction DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L BNE RTS #1,D1 BCLE On définit toutes les variables dans une zone DATA Les variables apparaissent généralement au début du programme. Exemple de programme Introduction DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L BNE RTS #1,D1 BCLE Définition d'une variable de type entier (long) 32 bits (int) La valeur d'initialisation est ici exprimée en décimal 10

Exemple de programme Introduction DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L BNE RTS #1,D1 BCLE Définition d'une variable de type (Byte) octet (8 bits) (char) La valeur d'initialisation est ici exprimée en hexadécimal ($) Exemple de programme Introduction DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L BNE RTS #1,D1 BCLE Définition d'un tableau de 12 octets (char []) 11

Exemple de programme Introduction DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L BNE RTS #1,D1 BCLE Les instructions suivent généralement les données dans une zone CODE Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE L'instruction MOVE permet de copier une donnée. 12

Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE Un MOVE permet de copier des valeurs 8, 16 ou 32 bits (Byte, Word, Long). Un suffixe précise le cas choisi. Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE Les instructions arithmétiques (ADD, SUB, ) ont seulement deux paramètres. 13

Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE Un # indique qu'il s'agit d'une constante Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE Le SUB précédent a produit une valeur qui a été rangée dans le registre D1. Si cette valeur est non nulle (BNE), on va poursuivre l'exécution à l'étiquette BCLE 14

Exemple de programme DATA X: DC.L 5 Y: DC.B $A TAB: DS.B 12 CODE MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 Introduction SUB.L BNE RTS #1,D1 BCLE L'instruction RTS marque la fin du programme principal. Cette instruction permet aussi de marquer la fin d'une fonction. Exemple de fonction DATA X: DC.L 5 Y: DC.B $A CODE JSR FONCT1 RTS FONCT1: MOVE.L X,D1 MOVE.B Y,D0 BCLE: ADD.L D0,D0 SUB.L #1,D1 Introduction BNE BCLE RTS Ce nouveau programme est équivalent au précédent. Le programme principal commence juste après l'instruction CODE. On y appelle une fonction FONCT1 15

REPRESENTATION DE L INFORMATION Codage des entiers et flottants Entiers: Signe + Valeur absolue Complément à 1 Complément à 2 Flottant: Mantisse ± 1.xxxxx 2exp 0 10000110 01100100010000000000000 sgn exposant mantisse 23 bits Base 10: 1.78125 *10 2 16

Caractères Code ASCII (8 bits) American Standard Code for Information Interchange 'A' : 0100 0001 'B' : 0100 0010 'a' : 0110 0001 'b' : 0110 0010 Un code est attribué à chaque caractère Représentation de l'information Caractères Code ASCII standard bit n 7 à 0 Code ASCII étendu (non standard) "é" en ASCII français : $7B "é" en ASCII PC : $82 "é" en ASCII Macintosh : $8E "é" en ASCII Unix : $E9 Représentation de l'information 17

Caractères Représentation de l'information LE Code ASCII Caractères Représentation de l'information UN code ASCII étendu 18

Caractères Ne jamais introduire un code ASCII dans un programme Utiliser directement le caractère MOVE.B # 'A', 120 MOVE.B # 65, 120 Représentation de l'information GESTION DES DONNÉES 19

Structuration de la mémoire Les octets peuvent être regroupés 1 octet (valeur 8 bits, octet) 2 octets (valeur 16 bits, mot) 4 octets (valeur 32 bits, mot long) 3.1 La Mémoire Accès à la mémoire MOVE.B : accès valeur 8 bits MOVE.W : accès valeur 16 bits MOVE.L : accès valeur 32 bits 3.1 La Mémoire 20

Adresse des mots 3.1 La Mémoire L'adresse d'un mot (ou mot long) est l'adresse de l'octet qui a la plus faible valeur Exemple: n 0 n 1 n 2 n 3 n 4 adresse n 5 du mot? n 6 n 7 Quelle est l'adresse d'un mot (long) si : l'adresse du mot (long) suivant est $1010 l'adresse du mot (long) précédent est $1010 il est le dernier mot (long) d'un bloc de 16 octets commençant à l'adresse $1000 3.1 La Mémoire 21

Stockage des valeurs dans la mémoire Little Endian et Big Endian Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les voyages de Gulliver. Le monde se divisait en deux groupes: Ceux qui mangeaient les œufs en commençant par le gros bout (big end) Ceux qui mangeaient les œufs en commençant par le petit bout (little end) 3.1 La Mémoire Stockage des valeurs dans la mémoire Little Endian et Big Endian Ces termes proviennent d'un roman satyrique écrit au 18e siècle par Jonathan Swift: les voyages de Gulliver. Le monde se divisait en deux groupes: Ceux qui mangeaient les œufs en commençant par le gros bout Ceux qui mangeaient les œufs en commençant par le petit bout 3.1 La Mémoire 22

Stockage des valeurs dans la mémoire Sur certains processeurs (Motorola, RISC, ) on utilise le mode «big-endian». On commence par ranger le gros bout ("big end", poids forts ) en mémoire à l'adresse la plus faible. Sur d'autres processeurs (Pentium, ) on utilise le mode «little-endian». On commence par ranger le petit bout ("little-end", poids faibles) en mémoire à l'adresse la plus faible 3.1 La Mémoire Avantages "big-endian" "littleendian" Le mode «big-endian» est plus logique pour l'utilisateur. En «little-endian» on trouve les poids faibles aux adresses les plus faibles Ce mode est plus logique pour le processeur. Exemple: $89ABCDEF 3.1 La Mémoire 23

Exercices «big-endian» (cas Motorola) Valeur 16 bits $AB2F à l'adresse $1000 Valeur 32 bits $FE125DA1 à l'@ $1002 Valeur 32 bits $C3 à l'@ $1001 Valeur 8 bits $12 à l'@$1000 3.1 La Mémoire Schéma (Motorola 68000) 8 registres de données Unité de calcul 8 registres d'adresses Reg SR Registre PC 3.2 Le processeur 24

Unité de calcul Addition, Soustraction Multiplication, Division Négation Et, Ou, Ou exclusif Non... 3.2 Le processeur Registres Mémoire interne du processeur Le processeur dispose de quelques mots longs de mémoire pour ranger les résultats des calculs intermédiaires 16 mots longs 32 bits 3.2 Le processeur 25

Registres de données (D0, D1,, D7) 8 registres 32 bits Peuvent être vus comme des registres 8, 16 ou 32 bits. Les zones modifiables sont: bits 0..7 bits 0..15 (opération.b) (opération.w) 3.2 Le processeur bits 0..31 (opération.l) Exercice registre de données MOVE.L #$AABBCCDD,D3 MOVE.B #$99,D3 MOVE.W #$88,D3 Trouver la valeur de D3 Les bits 8..31 ou les bits 16..31 peuvent rester inchangés 3.2 Le processeur 26

Registres d'adresses (A0, A1,.., A7) 8 registres 32 bits Ils sont toujours utilisés comme des registres 32 bits (une adresse s'exprime toujours sur 32 bits) Les opérations de type MOVE.B sont interdites 3.2 Le processeur Le registre compteur ordinal (PC) Contient l'adresse de l'instruction courante Ce registre est automatiquement incrémenté après l'exécution d'une instruction (exécution séquentielle) Certaines instructions provoquent des modifications de PC (BRA) 3.2 Le processeur 27

Le registre statut (SR) Status Register Décrit le mode de fonctionnement et l'état du processeur 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 kt 0 S 0 0 I2I1I00 0 0 X N Z V C Octet superviseur Octet utilisateur 3.2 Le processeur CCR Octet utilisateur SR (CCR) C (retenue, carry) V (dépassement, overflow) Z (zéro) N (négatif) X (extension) Renseigne sur l'état du processeur après l'exécution d'une instruction arithmétique ou logique 3.2 Le processeur 28

Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 Trouver la valeur de N, Z, V, C 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 N = 1 Z = 0 V = 0 C = 0 3.2 Le processeur 29

Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 N = 0 Z = 1 V = 0 C = 1 3.2 Le processeur Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 N = 0 Z = 0 V = 0 C = 0 3.2 Le processeur 30

Exercice CCR MOVE.B #$FF,D2 ADD.B #1,D2 MOVE.B #127,D2 ADD.B #1,D2 N = 1 Z = 0 V = 1 C = 0 3.2 Le processeur Les instructions de branchement BEQ (branchement si = 0) EQual BNE (branchement si!= 0) Not Equal BGT (branchement si > 0) Greater Than BGE (branchement si >=0) Greater or Equal BLT (branchement si < 0) Less Than BLE (branchement si <= 0) Less or Equal 3.2 Le processeur 31

Solution exercices BEQ : Z BNE : BGT : BGE : BLT : BLE : Z N. V. Z + N. V. Z N. V + N. V N. V + N. V Z + N. V + N. V 3.2 Le processeur MODES D ADRESSAGE 32

Catégories Adressage registre direct Adressage registre indirect Adressage absolu Adressage immédiat Adresse relatif à PC Adressage implicite Modes d'adressage Adressage direct registre de données Notation: Dn Taille: B, W, L Exemple: MOVE.L D2,D3 Transfert du contenu de D2 vers D3 Modes d'adressage 33

Adressage direct registre d'adresse Notation: An Taille: L Exemple: MOVE.L A2,A3 Transfert du contenu de A2 vers A3. Ne pas utiliser les tailles B et W Modes d'adressage Adressage registre indirect Notation: (An) Taille: B, W, L Exemple: MOVE.L (A1),D3 Copie du contenu de la mémoire à l adresse A1 vers D3 Modes d'adressage 34

Adressage registre indirect Comment initialiser An? DATA TAB: DS.B 10 CODE LEA Modes d'adressage TAB,A2 ; copie de la valeur de TAB ;dans le registre d adresse A2 ;(Load Effective Address) MOVE.B #2,(A2);placer l octet de valeur 2 à ;l adresse pointée par A2 et ;donc le premier octet du tableau RTS Adressage registre indirect avec post-incrémentation Notation: (An)+ Taille: B, W, L Exemple: MOVE.L (A1)+,D3 Adressage indirect en utilisant la valeur de An puis incrémentation de An de 1 si.b de 2 si.w de 4 si.l Modes d'adressage 35

Adressage registre indirect avec pré-décrémentation Notation: -(An) Taille: B, W, L Exemple: MOVE.L -(A1),D3 Décrémentation de An puis adressage indirect en utilisant la nouvelle valeur de An de 1 si.b de 2 si.w de 4 si.l Modes d'adressage Adressage registre indirect avec déplacement Notation: d(an) Taille: B, W, L Exemple: MOVE.L 4(A1),D3 Adressage indirect en utilisant l'adresse (An + d) Le registre An n'est pas modifié Modes d'adressage 36

Adressage absolu long Notation: adresse Taille: B, W, L Exemple: MOVE.L 4,D3 Écrire le contenu de la mémoire à l adresse 4 dans le registre D3 L'adresse 32 bits est spécifiée en décimal ou en hexadécimal On évite les adresses 16 bits (absolu court) Modes d'adressage Adressage relatif à PC Notation: d(pc) Taille: Exemple: BRA 2(PC) BRA suite suite: La valeur contenue dans PC est utilisée pour calculer l'adresse effective Ne pas utiliser cette forme.utiliser les étiquettes (cas BRA) Modes d'adressage 37

Adressage immédiat Notation: #valeur Taille: B, W, L Exemple: MOVE.L #2,D4 Mettre la valeur 2 dans le registre D4 Modes d'adressage INSTRUCTIONS ET DONNÉES 38

Structure d'un programme Zones de données (DATA) Zones d'instructions (CODE) Exemple: DATA ; définition des données CODE ; définition des instructions Instructions et données Définition des données DC.B initialisation d'un octet ou d'une chaîne DC.W initialisation d'un mot DC.L initialisation d'un mot long DS.B réservation d'un tableau d'octets DS.W réservation d'un tableau de mots DS.L réservation d'un tableau de mots longs Données 39

Instruction DC (Define Constant) Données Permet d'effectuer des réservations de mémoire avec initialisation (octet, mot, mot-long ou chaîne) Exemples: DC.B 4 DC.B DC.W 5 DC.L 8 "AB" Instruction DC (Define Constant) Données Permet d'effectuer des réservations de mémoire avec initialisation (octet, mot, mot-long ou chaîne) Exemples: DC.B 4 DC.B DC.W 5 DC.L 8 "AB" n 0 4 n 1 'A' n 2 'B' n 3 0 n 4 0 n 5 5 n 6 0 n 7 0 n 8 0 n 9 8 40

Instruction DS (Define Storage) Données Permet d'effectuer des réservations de mémoire sans initialisation (tableaux d'octets, de mots, ou de mots longs) Exemples: DS.B 4 DS.W 5 DS.L 6 Problème de l'accès aux données Pour accéder à une donnée il faut son adresse Les étiquettes permettent de définir des repères dans les zones de données. Elles sont utilisables en tant qu'adresses. Données Les étiquettes permettent aussi de définir des repères dans les zones d'instructions 41

Liste des instructions principales MOVE, LEA CMP, BEQ, BNE, BGT, BGE, BLT, BLE BRA, JMP ADD, SUB, MULS, DIVS, NEG AND, OR, EOR, NOT LSL, LSR, ASL, ASR, ROL, ROR JSR, RTS Instructions Instruction MOVE Syntaxe: MOVE <ea1>,<ea2> Rôle: copier la donnée se trouvant à l'adresse spécifiée par <ea1> à l'adresse spécifiée par <ea2> Notes <ea1>: An interdit en mode.b Notes <ea2>: #valeur et d(pc) interdits Exemple: Instructions MOVE.W #3,(A2)+ 42

Instruction LEA (forme simplifiée) Instructions Syntaxe: LEA étiquette,an Rôle: permet d'obtenir une adresse dans un registre d'adresse (par exemple l'adresse correspondant à une étiquette) Exemple: LEA X1,A3 MOVE.L (A3),D0 Problème de l'accès aux données (exercice 1) Instructions DATA X1: DC.L 3 DC.L 4 CODE ; comment accéder au ; deuxième mot long? RTS 43

Problème de l'accès aux données (exercice 2) Instructions DATA X1: DC.W 3 DC.L 4 DC.L 5 CODE ; comment accéder au ; deuxième mot long? RTS Problème de l'accès aux données (exercice 3) Instructions DATA X1: DS.L 2 DC.L 4 DC.L 5 CODE ; comment accéder au ; troisième mot long? RTS 44

Instruction CMP Instructions Syntaxe: CMP <ea1>,<ea2> Rôle: calcul de <ea2> - <ea1> sans modifier <ea2> Indicateurs: N, Z, V et C modifiés Formes possibles: CMP <ea1>,dn CMP <ea1>,an CMP #data,<ea2> Instruction BRA Syntaxe: BRA étiquette Rôle: désigne la prochaine instruction qui sera exécutée Indicateurs: non modifiés Exemple: BRA SUITE ADD.L #1,D0 SUITE: ADD.L #1,D1 Instructions 45

Instruction Bxx (BEQ, BNE, BGT, BGE, BLT, BLE) Instructions Syntaxe: Bxx étiquette Rôle: branchement conditionnel Indicateurs: non modifiés Exemple: MOVE.L #1,D1 CMP.L #1,D1 BEQ SUITE ADD.L #1,D3 SUITE: ADD.L #1,D4 ADD non exécuté INSTRUCTIONS ARITHMÉTIQUES 46

Liste des instructions ADD (ADDA, ADDI, ADDQ, ADDX) Address, Immediate, Quick, X(carry) SUB (SUBA, SUBI, SUBQ, SUBX) MULS (MULU) Unsigned DIVS (DIVU) NEG (NEGX) Instructions arithmétiques Addition (ADD) Syntaxe: ADD <ea1>,<ea2> Rôle: calcul de <ea1> + <ea2> et rangement du résultat à <ea2> Formes possibles: ADD <ea1>,dn ADD Dn,<ea2> ADD <ea1>,an ADD #data,<ea2> Instructions arithmétiques 47

Soustraction (SUB) Syntaxe: SUB <ea1>,<ea2> Rôle: calcul de <ea2> - <ea1> et rangement du résultat à <ea2> Formes possibles: SUB <ea1>,dn SUB Dn,<ea2> SUB <ea1>,an SUB #data,<ea2> Instructions arithmétiques Multiplication signée (MULS) Syntaxe: MULS <ea1>,dn Rôle: multiplication <ea1> (16 bits) par Dn (16 bits) et rangement du résultat dans Dn (32 bits) Exercice: multiplier D2 par X avec X défini de la façon suivante: DATA X: DC.W 3 Instructions arithmétiques 48

Multiplication signée (MULS) DATA X: DC.W 3 CODE MOVE.W #2,D2 LEA X,A1 MULS(A1), D2 ;ou MULS X, D2 résultat 6 RTS Division signée (DIVS) Syntaxe: DIVS <ea1>,dn Rôle: division de Dn (32bits) par <ea1> (16 bits). Rangement du quotient dans les bits 0 à 15 de Dn. Rangement du reste dans les bits 16 à 31 de Dn Exercice: diviser D0 par 2, mettre le quotient dans D1, mettre le reste dans D2 Instructions arithmétiques 49

Division signée (DIVS) DATA X: DC.W 2 CODE MOVE.L #7,D0 ; 7/2 LEA X,A1 DIVS(A1), D0 MOVE.W D0, D1 MOVE.L D0, 2(A1) MOVE.W 2(A1), D2 Négation (NEG) Syntaxe: NEG <ea> Rôle: calcul de 0 - <ea> et rangement du résultat à <ea> Exemple: NEG D3 Instructions arithmétiques 50

INSTRUCTIONS LOGIQUES Liste des instructions AND (ANDI) OR (ORI) EOR (EORI) NOT NEG (NEGX) LSL, LSR, ASL, ASR, ROR, ROL (ROXL, ROXR) Instructions logiques et décalages 51

ET logique (AND) Syntaxe: AND <ea1>,<ea2> Rôle: calcul de <ea1> & <ea2> (bit à bit) et rangement du résultat dans <ea2> Formes possibles: Instructions logiques AND <ea1>,dn AND Dn,<ea2> AND #data,<ea2> OU logique (OR) Syntaxe: OR <ea1>,<ea2> Rôle: calcul de <ea1> <ea2> (bit à bit) et rangement du résultat dans <ea2> Formes possibles: Instructions logiques OR <ea1>,dn OR Dn,<ea2> OR #data,<ea2> 52

OU exclusif (EOR) Syntaxe: EOR <ea1>,<ea2> Rôle: calcul de <ea1> xor <ea2> (bit à bit) et rangement du résultat dans <ea2> Formes possibles: EOR Dn,<ea2> EOR #data,<ea2> Instructions logiques Inversion bit à bit (NOT) Syntaxe: NOT <ea> Rôle: calcul de ~<ea> et rangement du résultat à <ea> Exemple: NOT.L D2 Instructions logiques 53

Exercices Mettre à 0 les bits 8 à 31 de D2 sans changer les autres bits Mettre le bit n 5 de D2 à 0 sans changer les autres bits Mettre le bit n 5 de D2 à 1 sans changer les autres bits Extraire le quotient d'une division sous forme 32 bits signée Instructions logiques Décalage arithmétique vers la droite (ASR) Syntaxe: ASR <ea1>,<ea2> Rôle: calcul de <ea2> >> <ea1> et rangement du résultat à <ea2> (on décale <ea2> de <ea1> positions vers la droite en gardant le bit de signe inchangé) Formes possibles: ASR Dm,Dn Instructions logiques ASR #data,dn ; 1 <=data <= 8 ASR <ea> ; décalage d 1 bit 54

Décalage arithmétique vers la gauche (ASL) Syntaxe: ASL <ea1>,<ea2> Rôle: calcul de <ea2> << <ea1> et rangement du résultat à <ea2> (on décale <ea2> de <ea1> positions vers la gauche en remplaçant par 0 les bits décalés) Formes possibles: Instructions logiques ASL Dm,Dn ASL #data,dn ; 1 <=data <= 8 ASL <ea> ; décalage d 1 bit Schémas ASR, ASL ASL C X 0 ASR C X Instructions de décalage 55

Décalages logiques (LSR et LSL) Syntaxe: LSx <ea1>,<ea2> Rôle: décalage de <ea2> de <ea1> positions. Les bits décalés sont remplacés par 0. Formes possibles: LSx Dm,Dn LSx <ea> Instructions logiques LSx #data,dn ; 1 <=data <= 8 Schémas LSR, LSL LSL C X 0 LSR 0 C X Instructions de décalage 56

Rotations (ROR et ROL) Syntaxe: ROx <ea1>,<ea2> Rôle: décalage de <ea2> de <ea1> positions. Les bits forts poids sont échangés avec les bits faibles poids Formes possibles: ROx Dm,Dn ROx <ea> Instructions logiques ROx #data,dn ; 1 <=data <= 8 Schémas ROR, ROL ROL C ROR C Instructions de décalage 57

Exercices Extraire le quotient et le reste d'une division Instructions logiques 58