Cours de David Delfieu. September 5, / 95

Documents pareils
TD Architecture des ordinateurs. Jean-Luc Dekeyser

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

Jeu d instructions NIOS II

Rappels d architecture

CM2 L architecture MIPS32

PIC : COURS ASSEMBLEUR

Ordinateurs, Structure et Applications

Microprocesseur + Logiciel

ASR1 TD7 : Un microprocesseur RISC 16 bits

La carte à puce. Jean-Philippe Babau

Conception de circuits numériques et architecture des ordinateurs

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

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

Architecture des ordinateurs

IFT1215 Introduction aux systèmes informatiques

Conversion d un entier. Méthode par soustraction

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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


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

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

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

Modules d automatismes simples

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

Informatique Générale

Glossaire des nombres

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

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

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 des ordinateurs Introduction à l informatique

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

Les fonctions logiques

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

Transmissions série et parallèle

Programmation assembleur : aperçu

Structure d un programme

Logique séquentielle

VIII- Circuits séquentiels. Mémoires

IV- Comment fonctionne un ordinateur?

Cours d algorithmique pour la classe de 2nde

RÉALISATION ET MISE AU POINT D UN SYSTÈME DE TÉLÉSURVEILLANCE VIDÉO

Représentation des Nombres

Rappels Entrées -Sorties

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

Concevoir son microprocesseur

3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)

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

Licence Sciences et Technologies Examen janvier 2010

Cours d Informatique

Logiciel de base. Première année ENSIMAG

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

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

Compilation (INF 564)

Chapitre 4 : Les mémoires

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

Ordinateurs, Structure et Applications

Le codage informatique

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

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

CARTES A PUCE. Pascal Urien - Cours cartes à puce /06/10 Page 1

9 rue Georges Besse BP FONTENAY LE FLEURY FRANCE Tél.:(33) fax:(33)

Conception de circuits numériques et architecture des ordinateurs

Organisation des Ordinateurs

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

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

SUR MODULE CAMÉRA C38A (OV7620)

CONVERTISSEUR RS 232/485 NOTICE

Cours d Algorithmique et de Langage C v 3.0

La technologie Java Card TM

Les intermédiaires privés dans les finances royales espagnoles sous Philippe V et Ferdinand VI

Manipulations du laboratoire

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

La norme Midi et JavaSound

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

Exécution des instructions machine

Etude de FP3 commande moteur et électroaimant. Déplacement carte et connexion

Systèmes et traitement parallèles

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)

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Adressage des données des contrôleurs du WAGO-I/O-SYSTEM 750. Note d application

Contrôle d accès UTIL TP N 1 découverte

Tout savoir sur le matériel informatique

Chapitre 10 Arithmétique réelle

Fiche technique CPU 315SN/PN (315-4PN33)

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Les opérations binaires

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

Vers l'ordinateur quantique

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

Master e-secure. VoIP. RTP et RTCP

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

Module M1 Elément 2 : Informatique 1 (I1)

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

SCL LOGICIEL DE CONTROL

LA SECURITE DES CARTES A BANDE MAGNETIQUE

Transcription:

Cours de 68000 David Delfieu September 5, 2017 1 / 95

1 Plan 2 Les registres internes du 68000 3 Conception d une carte à base de 68000 Bus d adresses Bus de Données Ajout de mémoires Ajout de PIA 4 Le langage Les éléments de bases du langage Les modes d adressage Modes d adressage direct Modes d adressage indirect les entrées - sorties : Communication avec le BIOS Plan 2 / 95

Aperçu global D0-32 bits D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits Les registres internes du 68000 3 / 95

Rôle des registres de données On a 8 registres de données D0 à D7 ayant tous les mêmes caractéristiques sur lesquels on peut faire : Des additions, soustractions, multiplications, divisions, Des décalages, rotations, des masques de bits Les registres internes servent de variables intermédiaires de calcul. Exemple MOVE #3,D 0 MOVE #5,D 1 MULU D 0, D 1 Les registres internes du 68000 4 / 95

Aperçu global 68000 D 0 0000000000000000000000000000011 D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits Opérande B : 32b UAL Résultat R : 32b Les registres internes du 68000 5 / 95

Aperçu global 68000 D 0 0000000000000000000000000000011 0000000000000000000000000000101 D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits Opérande B : 32b UAL Résultat R : 32b Les registres internes du 68000 6 / 95

Aperçu global 68000 D 0 D 1 0000000000000000000000000000011 0000000000000000000000000001111 D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits 3 5 UAL 15 Les registres internes du 68000 7 / 95

Aperçu global D0-32 bits D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits UAL A1-32 bits A2-32 bits A3-32 bits A4-32 bits A5-32 bits A6-32 bits A7-32 bits A7' - 32 bits PC - 32 bits SR - 16 bits Les registres internes du 68000 8 / 95

Rôle des registres d adresse On a 7 registres d adresse,,..., A 6, A 7 qui peuvent tous gérer une pile. Le registre A 7 représente la pile système. Sur ces registres on peut réaliser : Des additions, soustractions, Des modes d adressages post-incrémentés et pré-décrémentés Les registres internes du 68000 9 / 95

Aperçu global On retrouve maintenant les registres : PC : qui est le registres qui pointe sur la prochaine instruction à exécuter. SR est le registre d état du processeur. T S I 2 I 1 I 0 X N Z V C Les registres internes du 68000 10 / 95

Aperçu global D4 D3 D2 D1 D0 D0-32 bits D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits UAL A0-32 bits A1-32 bits A2-32 bits A3-32 bits A4-32 bits A5-32 bits A6-32 bits A7-32 bits A7-32 bits D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 A7' - 32 bits PC - 32 bits SR - 16 bits Les registres internes du 68000 11 / 95

Aperçu global D4 D3 D2 D1 D0 A1 A2 A3 A4 D0-32 bits D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits UAL A0-32 bits A1-32 bits A2-32 bits A3-32 bits A4-32 bits A5-32 bits A6-32 bits A7-32 bits A7-32 bits A7' - 32 bits PC - 32 bits SR - 16 bits D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 Les registres internes du 68000 12 / 95

Aperçu global D4 D3 D2 D1 D0 AS UDS LDS R/W DTACK BG BGACK Vcc BR Clock Vn HALT RESET VMA E VPA BERR ILP2 IPL1 IPL0 FC2 FC1 FC0 A1 A2 A3 A4 D0-32 bits D1-32 bits D2-32 bits D3-32 bits D4-32 bits D5-32 bits D6-32 bits D7-32 bits UAL A0-32 bits A1-32 bits A2-32 bits A3-32 bits A4-32 bits A5-32 bits A6-32 bits A7-32 bits A7-32 bits A7' - 32 bits PC - 32 bits SR - 16 bits D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 Vcc A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 Les registres internes du 68000 13 / 95

Aperçu global par fonctionalités VCC GND CLK Bus d'adresses A1-A23 Etat du processeur FC0 FC1 FC2 Bus de données D0:D15 Gestion périphériques MC6800 Commande système E VMA VPA BERR RESET HALT MC68000 AS R/W UDS LDS DTACK BR BG BGACK IPL0 IPL1 IPL2 Commande de bus asynchrone Gestion d'arbitrage de bus Gestion d'interruption Les registres internes du 68000 14 / 95

Bufferisation du bus d adresse A1 A2 A3 A4 A5 A6 A7 A8 74LS73 BA1 BA2 BA3 BA4 BA5 BA6 BA7 BA8 68000 A9 A10 A11 A12 A13 A14 A15 A16 74LS73 BA9 BA10 BA11 BA12 BA13 BA14 BA15 BA16 Lignes d'adresses allant vers les autres composants de la carte A17 A18 A19 A20 A21 A22 A23 74LS73 BA17 BA18 BA19 BA20 BA21 BA22 BA23 AS +5v 4.7 K DMA =0 adresse validée =1 adresse invalidée Conception d une carte à base de 68000 Bus d adresses 15 / 95

Gestion de sens de transfert sur le bus de Données D8 D9 D10 D11 D12 D13 D14 D15 74LS245 DIR E BA9 BA10 BA11 BA12 BA13 BA14 BA15 BA16 VERS ADRESSE faible (@f) Bus de données D0 D1 D2 D3 68000 D4 74LS245 D5 D6 D7 DIR E BA1 BA2 BA3 BA4 BA5 BA6 BA7 BA8 VERS ADRESSE Forte (@F) OR OR @f @F 1789 = 17 89 UDS LDS R/W NOT Conception d une carte à base de 68000 Bus de Données 16 / 95

Gestion de sens de transfert sur le bus de Données D8 D9 D10 D11 D12 D13 D14 D15 74LS245 DIR E BA9 BA10 BA11 BA12 BA13 BA14 BA15 BA16 VERS ADRESSE @f Bus de données D0 D1 D2 D3 68000 D4 74LS245 D5 D6 D7 DIR E BA1 BA2 BA3 BA4 BA5 BA6 BA7 BA8 VERS ADRESSE @F OR OR UDS LDS R/W NOT Cas d'un transfert de la mémoire vers le micro MOVE.B $FFB6,D0 Un octet venant d'une adresse paire ==> UDS=0 Lecture ==> R/W =1 Conception d une carte à base de 68000 Bus de Données 17 / 95

Gestion de sens de transfert sur le bus de Données D8 D9 D10 D11 D12 D13 D14 D15 74LS245 DIR E BA9 BA10 BA11 BA12 BA13 BA14 BA15 BA16 VERS ADRESSE (@f) Bus de données D0 D1 D2 D3 68000 D4 74LS245 D5 D6 D7 DIR E BA1 BA2 BA3 BA4 BA5 BA6 BA7 BA8 VERS ADRESSE (@F) OR OR UDS LDS R/W NOT Cas d'un transfert de la mémoire vers le micro MOVE.B $FFB7,D0 Un octet venant d'une adresse impaire ==> LDS=0 Lecture ==> R/W =1 Conception d une carte à base de 68000 Bus de Données 18 / 95

Gestion de sens de transfert sur le bus de Données D8 D9 D10 D11 D12 D13 D14 D15 74LS245 DIR E BA9 BA10 BA11 BA12 BA13 BA14 BA15 BA16 VERS ADRESSE @f Bus de données D0 D1 D2 D3 68000 D4 74LS245 D5 D6 D7 DIR E BA1 BA2 BA3 BA4 BA5 BA6 BA7 BA8 VERS ADRESSE @F OR OR UDS LDS R/W NOT Cas d'un transfert de la mémoire vers le micro MOVE.W $FFB6,D0 Un mot venant d'une adresse paire ==> LDS=0 et UDS=0 Lecture ==> R/W =1 Conception d une carte à base de 68000 Bus de Données 19 / 95

ROM 8 bits 16Ko=2^16=> 16 bits d'@ UDS DTACK RAM E G AS E O 0 1 E 1 2 Vcc E 2 3 74138 4 8 A 2 5 6836E6 : 16ko DQ 0 DQ 7 ROM 1 PF 7 6 6 7 68000 LDS E G Pf A1-A14 D0-D7 DQ 6836E6: 16ko 0 DQ 7 D8-D15 ROM 2 Conception d une carte à base de 68000 Ajout de mémoires 20 / 95

ROM 16 bits D 15 D 0 74138 AS E 0 9 8 7 0 0 0 E 1 E 2 A 2 O 1 2 3 4 5 6 7 6 ACCES au dernier mot (16 bits) de la ROM A 23 A 22 A 21 A 20 9 8 7 6 5 4 3 2 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2. * * * * 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1. MOVE.W $01FFFE,D 0 Conception d une carte à base de 68000 Ajout de mémoires 21 / 95

ROM 16 bits x x.. x 68000 D 15 D 0 D0 DTACK AS E 0 9 8 7 0 0 0 E 1 E 2 A 2 O 1 2 3 4 5 6 7 27210 : 64 kw D 15 D 0 OE CE 6 74138 5 A 23 A 22 A 21 A 20 9 8 7 6 5 4 3 2 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2. * * * * 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1. MOVE.W $01FFFE,D0 Conception d une carte à base de 68000 Ajout de mémoires 22 / 95

RAM 68 000 DTACK UDS AS +V E 0 E 1 E 2 O 1 2 3 ROM 2*16ko RAM 32kw 4 8 7 6 0 0 1 A 2 5 6 7 LDS 5 R/W D 0 D 15 ACCES au 3 mot de la RAM A 23 A 22 A 21 A 20 9 8 7 6 5 4 3 2 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2. * * * * * 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1. MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 23 / 95

RAM 68 000 DTACK UDS ROM 2*16ko AS +V E 0 E 1 E 2 O 1 2 3 RAM 32kw 4 8 7 6 0 0 1 A 2 5 6 7 LDS 5 R/W D 0 D 15 ACCES au 3 mot de la RAM A 23 A 22 A 21 A 20 9 8 7 6 5 4 3 2 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2. * * * * * 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1. MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 24 / 95

RAM 68 000 DTACK 43256 RAM 1 UDS CS OE I/O 1 AS +V E 0 E 1 E 2 O 1 2 3 ROM 2*16ko RAM 32kw WE 4 I/O 8 D 8 -D 15 4 8 7 6 0 0 1 A 2 5 6 7 43256 RAM 2 LDS NOR CS OE I/O 1 D 0 -D 7 WE I/O 8 5 4 R/W x x.. x D0 D 0 D 15 ACCES au 3 mot de la RAM A 23 A 22 A 21 A 20 9 8 7 6 5 4 3 2 1 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2. * * * * * 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1. MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 25 / 95

Bus ERRor : BERR et Data ACKnowledge : DTACK AS V cc FC 0 FC 1 FC 2 E 0 E 1 E 2 IC 1 A 2 0 1 2 3 4 5 6 NAND MEMT NAND BERR 7 74138 DTACK V cc 6 7 8 E 0 E 0 1 1 E 2 2 IC 2 3 4 5 A 2 6 7 74138 Etats du processeur FC2 FC1 FC0 0 0 0 pas défini 0 0 1 données USER 0 1 0 Program. USER 0 1 1 non défini 1 0 0 non défini 1 0 1 Super Données 1 1 0 Super Program. 1 1 1 Acqu. d'it ROM RAM Conception d une carte à base de 68000 Ajout de mémoires 26 / 95

Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 27 / 95

OE I/O 1 Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 43256 RAM 2 CS WE I/O 8 4 43256 RAM 2 CS OE I/O 1 I/O 8 WE 4-5 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 28 / 95

Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 43256 RAM 2 CS OE I/O 1 WE I/O 8 D 8 -D 15 4 43256 RAM 2 CS OE I/O 1 I/O 8 D 0 -D 7 WE 4-5 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 29 / 95

Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 43256 RAM 2 CS OE I/O 1 WE I/O 8 D 8 -D 15 4 43256 RAM 2 CS OE I/O 1 I/O 8 D 0 -D 7 WE 4-5 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 30 / 95

Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 43256 RAM 2 CS OE I/O 1 WE I/O 8 D 8 -D 15 4 43256 RAM 2 LDS CS OE WE I/O 1 I/O 8 D 0 -D 7-5 4 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 31 / 95

Carte 68000 avec ses mémoires 68 000 BERR UDS AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND FC 1 FC 0 6 7 DTACK 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM 7 6 6 7 43256 RAM 2 CS WE OE I/O 1 WE 4 I/O 8 D 8 -D 15 43256 RAM 2 LDS CS OE WE I/O 1 I/O 8 D 0 -D 7-5 4 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 32 / 95

Carte 68000 avec ses mémoires 68 000 BERR E UDS G AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND 6836E6 : 16ko D 8 -D 15 3 DQ 0 DQ 7 ROM 1 FC 1 FC 0 DTACK 6 7 E G 6836E6 : 16ko 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM DQ 0 DQ A 7 13 ROM 1 D 0 -D 7 7 6 6 7 43256 RAM 2 CS WE OE I/O 1 WE 4 I/O 8 D 8 -D 15 43256 RAM 2 LDS CS OE WE I/O 1 I/O 8 D 0 -D 7-5 4 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 33 / 95

Carte 68000 avec ses mémoires 68 000 BERR E UDS G AS FC 2 E 0 +V E 1 E 2 A 2 O 1 2 3 4 5 NAND 6836E6 : 16ko D 8 -D 15 3 DQ 0 DQ 7 ROM 1 FC 1 FC 0 DTACK 6 7 E G 6836E6 : 16ko 8 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 ROM RAM DQ 0 DQ A 7 13 ROM 1 D 0 -D 7 7 6 6 7 43256 RAM 2 CS WE OE I/O 1 WE 4 I/O 8 D 8 -D 15 43256 RAM 2 LDS CS OE WE I/O 1 I/O 8 D 0 -D 7-5 4 MOVE.W $010006,D0 Conception d une carte à base de 68000 Ajout de mémoires 34 / 95

Carte 68000 avec ses mémoires 68000 ROM RAM Conception d une carte à base de 68000 Ajout de mémoires 35 / 95

PIA 68 000 FC 2 FC 1 PIA 2 D 0 -D 7 FC 0 VPA CS 2 CS 0 Port A C CA 2 IRQ A UDS IRQ B CS 1 VMA A 3 RESET Port B A 2 E CB 1 RS 1 CB 2 AS 8 7 6 +V E 0 E1 E 2 A 2 O 12 3 4 5 6 7 RS 0 D 0 -D 7 CS 2 Port A E R/W CS 0 IRQ A C CA 2 IRQ B IPL 2 IPL 1 IPL 0 CS 1 RESET Port B E CB 1 UDS D 8 -D 15 RS 1 RS 0 PI CB 2 Conception d une carte à base de 68000 Ajout de PIA 36 / 95

PIA 68 000 D 0 -D 7 D 0 -D 7 PIA 2 LDS FC 2 FC 1 FC 0 VPA CS 2 CS 0 IRQ A Port A C CA 2 IRQ B VMA A 3 CS 1 RESET Port B E CB 1 A 2 RS 1 RS 0 CB 2 AS 8 7 6 +V E 0 E1 E 2 A 2 O 12 3 4 5 6 7 RS 1 RS 0 Port A E R/W CS 0 E R/W C CA 2 RESET RESET CS 1 Port B IPL 2 IPL 1 IPL 0 UDS IRQ A IRQ B CS 2 CB 1 CB 2 D 8 -D 15 D 0 -D 7 PI Conception d une carte à base de 68000 Ajout de PIA 37 / 95

PIA 68 000 D 0 -D 7 D 0 -D 7 PIA 2 LDS FC 2 FC 1 FC 0 VPA CS 2 CS 0 IRQ A Port A C CA 2 IRQ B VMA A 3 CS 1 RESET Port B E CB 1 A 2 RS 1 RS 0 CB 2 AS 8 7 6 +V E 0 E1 E 2 A 2 O 12 3 4 5 6 7 RS 1 RS 0 Port A E R/W CS 0 E R/W C CA 2 RESET RESET IPL 2 IPL 1 IPL 0 +V E 0 E 1 E 2 A 2 O 1 2 3 4 5 6 7 CS 1 IRQ A IRQ B Port B CB 1 CB 2 UDS CS 2 D 8 -D 15 D 0 -D 7 PI Conception d une carte à base de 68000 Ajout de PIA 38 / 95

PIA Conception d une carte à base de 68000 Ajout de PIA 39 / 95

Ecriture d une valeur dans le PIA Horloge S 0 S 1 S 2 S 3 S 4 w w w w w w w w w w w w S 5 S 6 S 7 E FC Conception d une carte à base de 68000 Ajout de PIA 40 / 95

Ecriture d une valeur dans le PIA Horloge S 0 S 1 S 2 S 3 S 4 w w w w w w w w w w w w S 5 S 6 S 7 E FC -A 23 AS MOVE.B #4,CRA Conception d une carte à base de 68000 Ajout de PIA 41 / 95

Ecriture d une valeur dans le PIA Horloge S 0 S 1 S 2 S 3 S 4 w w w w w w w w w w w w S 5 S 6 S 7 E FC -A 23 AS Bus données 90 ns max Données valides VPA 30 ns max VMA 90 ns max MOVE.B #4,CRA Conception d une carte à base de 68000 Ajout de PIA 42 / 95

Le langage assembleur Instruction Source,Destination Commentaire MOVE #3, D1 Initialisation de D1 à 3 MOVE D1,D2 Initialisation de D2 à 3 ADD #1,D2 Incrémént de D2 à 4 MUL D1,D2 3*4 D2 Le langage Les éléments de bases du langage 43 / 95

Source et destination Exemple: Instruction Source Destination MOVE D 0, D 1 D 0 D 1 En C i = 3 + i; i est la destination En 68000 ADD #3, D 1 Le langage Les éléments de bases du langage 44 / 95

Registres de données et opérations arihtmétiques En C En 68000 D 1 = D 1 + D 2 ; ADD D 2, D 1 D 1 = D 1 D 2 ; SUB D 2, D 1 i = 3 i; MULU #3, D 1 i = 3/i; DIVU #3, D 1 Le langage Les éléments de bases du langage 45 / 95

Registres de données et Opérations logiques En C En 68000 D 1 = D 1 >> 2; ASR #2, D 1 D 1 = D 1 << 3; ASL #3, D 1 D 1 = D 1 & 0xFE; BCLR #0, D 1 D 1 = D 1 0x01; BSET #0, D 1 D 1 = D 1 ˆ 0x01; BCHG #0, D 1 Le langage Les éléments de bases du langage 46 / 95

Décalages 31 30 1 0 C 0... LSR.L #1, D1 31 30 1 0 C... 0 LSL.L #1, D1 LSL = ASL 31 30 1 0 C... ROL.L #1, D1 31 30 1 0 C... ROR.L #1, D1 31 30 s... 1 0 C ASR.L #1, D1 Le langage Les éléments de bases du langage 47 / 95

Structure d un programme MAX EQU 200 PROG EQU $0FF0000 E t i q u e t t e s ORG PROG Programme p r i n c i p a l CLR.L D0 CLR.L D1 BOUC BSR SOMME ADDI #1,D1 CMPI #MAX, D1 BLE BOUC TRAP #0 SOMME ADD D1, D0 Sous Programmes RTS DS.L 100 PILE DS.L 1 END Le langage Les éléments de bases du langage 48 / 95

Conception d un programme Problème Faire la somme des 250 premiers entiers. Faire un organigramme Codage en assembleur assemblage debogguage Le langage Les éléments de bases du langage 49 / 95

Organigramme Somme=0 i=0 i<=250? Non Oui Somme = Somme + i i=i+1 Fin du sousprogramme Le langage Les éléments de bases du langage 50 / 95

Avant le le codage en assembleur Il y a deux étapes préliminaires : Affecter les registres aux variables : Les 8 registres D 0, D 1, D 7 peuvent être affectés à des variables. définir les points de branchements Etiquettes de branchement Il y a deux sortes de branchements : en séquence : pas d étiquettes vers une autre instruction : nécessite une étiquette de branchement Le langage Les éléments de bases du langage 51 / 95

Avant le codage Somme=0 Somme D 0 Etiquettes de branchements i=0 i D 1 TEST i<=250? Non Oui Somme = Somme + i i=i+1 FIN Fin du sousprogramme Le langage Les éléments de bases du langage 52 / 95

Codage Somme=0 CLR D 0 i=0 CLR D 1 TEST i<=250? TEST CMPI #250,D 1 BGT FIN Somme = Somme + i ADD D 1,D 0 i=i+1 ADD #1,D 1 BRA TEST FIN Fin du programme FIN TRAP #0 Le langage Les éléments de bases du langage 53 / 95

Les modes d adressage L adressage Registre Direct L adressage Registre Immédiat L adressage Absolu L adressage Immédiat L adressage Relatif au compteur au compteur programme L adressage Implicite Le langage Les modes d adressage 54 / 95

Adressage Registre Direct Exemple : MOVE.W D 0,$1FFE Transfère les 16 bits de poids faible du registre de données D 0 vers l emplacement destination $1FFE et $1FFF La taille peut être : L octet : 8 bits Le mot : 16 bits Le double mot : 32 bits Remarque Attention : Si la taille spécifiée est le mot (.W) ou le mot long (.L) l adresse de destination doit être impérativement PAIRE. Sinon si le transfert est de type Byte (.B) alors une adresse impaire est autorisée. Le langage Les modes d adressage 55 / 95

Adressage Registre de Données : AE=Dn 68 000 MOVE.W D 0,$1FFE 31...16 15...0 A B C D 1 7 8 9 Mémoire Externe D 0 Poids Fort MSB Poids faible LSB x x 1 7 8 9 x x $1 FFE $1 FFF Le langage Les modes d adressage 56 / 95

Adressage Registre d adresse : AE = An Exemple : MOVE.W A 2,$4000 Transfère les 16 bits de poids faible du registre d adresse A 2 vers l emplacement destination $4000 et $4001 La taille peut être : L octet : 8 bits Le mot : 16 bits Le double mot : 32 bits Remarque Ce transfert n affecte pas le registre d état (SR). Le langage Les modes d adressage 57 / 95

Adressage Registre d adresse 68 000 MOVE.W A 2,$4000 31...16 15...0 0 1 C D 1 7 8 9 Mémoire Externe A 2 Poids Fort MSB Poids faible LSB x x 1 7 8 9 x x $4000 $4001 Le langage Les modes d adressage 58 / 95

Adressage Registre d adresse en destination Exemple : MOVE.W $5000,A 2 Transfère les 16 bits contenus aux adresses A 2 des adresses $5000 et $5001 vers A2 avec extension de signe. La taille peut être : Le mot : 16 bits Le double mot : 32 bits Remarque Lors d un transfert de mot (16 bits), il y a une extension de signe sur 32 bits. Le langage Les modes d adressage 59 / 95

Adressage Registre d adresse en destination 68 000 MOVE.W $5000,A2 31...16 15...0 F F F F 8 A B 0 Mémoire Externe A 2 Poids Fort MSB Poids faible LSB x x 8 A B 0 x x $5000 $5001 Le langage Les modes d adressage 60 / 95

Adressage Registre indirect : AE = (An) Exemple : MOVE.W ( ), D 1 Transfère les 16 bits contenus à partir de l adresse précisée dans le registres. Il y a en effet 2 octets à placer dans D 1. La taille peut être : l octet : 8 bits Le mot : 16 bits Le double mot : 32 bits Remarque Si le transfert est de type mot ou mot long, l adresse placée dans le registre d adresse (ici ) doit être paire. Dans le cas inverse on lèvera l exception numéro 3, appelée : "ILLEGAL ADDRESS". Le langage Les modes d adressage 61 / 95

Adressage Registre indirect : AE=(An) 68 000 MOVE.W (A1),D1 31...16 15...0 X X X X 8 A B 0 Mémoire Externe D 1 Poids Fort MSB Poids faible LSB x x 8 A B 0 x x $2000 $2001 0 0 0 0 2 0 0 0 Le langage Les modes d adressage 62 / 95

Adressage Registre indirect PostIncrémenté : AE = (An)+ Exemple : MOVE.W (A 5 )+,$2000 Transfère les 16 bits contenus à partir de l adresse précisée dans le registres A 5. Le registre A 5 est ensuite incrémenté de la taille correspondant au transfert c.a.d Word = 2. Remarque Le registre d adresse doit pointer vers une adresse PAIRE lorsque le transfert est fait sur un mot (W ) ou un mot long (L). L incrément du registre d adresse est déterminé par la taille du transfert : Octet : B, Mot :W ou mot Long : L Le langage Les modes d adressage 63 / 95

Adressage Post-Incrémenté AE = (An)+ 68 000 MOVE.B (A5)+,$5000 AVANT 31...16 15...0 0 0 0 0 2 F F E Mémoire Externe A 5 APRES +1 Source x x 8 A B 0 x x $2FFE $3000 0 0 0 0 2 F F F A 5 Destination 8 A x x $5000 $5001 Le langage Les modes d adressage 64 / 95

Adressage Post-Incrémenté AE = (An)+ 68 000 MOVE.W (A5)+,$5000 AVANT 31...16 15...0 0 0 0 0 2 F F E Adresse paire Mémoire Externe A 5 APRES +2 Source x x 8 A B 0 x x $2FFE $2FFF 0 0 0 0 3 0 0 0 A 5 Destination 8 A B 0 $5000 $5001 Le langage Les modes d adressage 65 / 95

Adressage Post-Incrémenté AE = (An)+ 68 000 AVANT MOVE.L (A5)+,$5000 Adresse paire Mémoire Externe 0 0 0 0 2 F F E A 5 +4 Source 8 A B 0 2 F 3 3 $2FFE $3000 $3001 $3002 APRES 0 0 0 0 3 0 0 2 A 5 Destination 8 A B 0 2 F 3 3 x x $5000 $5001 $5002 $5003 Le langage Les modes d adressage 66 / 95

Adressage Registre indirect Prédécrémenté : AE = (A n ) Exemple : MOVE.W (A 5 ),$5000 On décrémente d abord A 5 : A 5 = A 5 2. On transfère ensuite les 16 bits contenus à partir de la nouvelle adresse précisée dans le registre A 5 vers l adresse mémoire $5000. Remarques La taille précisée par l instruction peut être du type Octet, Mot ou Long. Le registre d adresse doit pointer vers une adresse PAIRE lorsque le transfert est fait sur un mot (W ) ou un mot long (L). Le décrément du registre d adresse est déterminé par la taille du transfert : Octet : B, Mot :W ou mot Long : L. Si la taille est l octet et que le registre d adresse est le registre de pile (A7), alors il y a toujours décrémentation de 2 pour laisser la pile sur une adresse paire. Le langage Les modes d adressage 67 / 95

Adressage Pré-Décrémenté AE = (A n ) 68 000 MOVE.W -(A5),$5000 AVANT 31...16 15...0 0 0 0 0 2 0 0 2 Mémoire Externe A 5 APRES -2 Source x x 8 A B 0 x x $2000 $2001 0 0 0 0 2 0 0 0 A 5 Destination x x 8 A B 0 x x $5000 $5001 Le langage Les modes d adressage 68 / 95

Adressage indirect avec déplacement AE = (A n ) + d 16 Exemple : MOVE.L $5000(A 5 ), D 5 On calcule l Adresses Effective : AE = A 5 + $5000 avec extension sur 32 bits. On transfère ensuite les 32 bits contenus dans l Adresse Effective vers l adresse mémoire $5000. Remarques La taille précisée par l instruction peut être du type Octet, Mot ou Long. Le registre d adresse doit pointer vers une adresse PAIRE lorsque le transfert est fait sur un mot (W ) ou un mot long (L). Si la taille est l octet l adresse peut être paire ou impaire Le langage Les modes d adressage 69 / 95

Adressage Post-Incrémenté AE = (A n ) + d 16 68 000 MOVE.W $5000(A5),D5 + 0000 2000 0000 5000 0000 7000 31...16 15...0 1 2 3 4 5 6 7 8 Mémoire Externe D 5 Source 1 2 3 4 0 0 0 0 2 0 0 0 5 6 7 8 A 5 $7000 $7001 $7002 $7003 Le langage Les modes d adressage 70 / 95

Adressage indirect avec déplacement et index AE = (A n ) + D n + d 8 Exemple : MOVE.W $08(A 2, D 3.W ), D 0 On calcule l Adresses Effective : AE = A 5 + $8 + D 3 avec extension de signe de l index et du déplacement sur 32 bits. On transfère ensuite les 16 bits contenus dans l Adresse Effective vers l adresse mémoire D 0. Remarques La taille précisée par l instruction peut être du type Octet, Mot ou Long. Le registre d adresse doit pointer vers une adresse PAIRE lorsque le transfert est fait sur un mot (W ) ou un mot long (L). Si la taille est l octet l adresse peut être paire ou impaire. Le langage Les modes d adressage 71 / 95

Adressage indirect avec déplacement et index AE = (A n ) + D n + d 8 (index D N long) MOVE.W $08(A2,D3.L),D0 MOVE.W $08(A 2,D 3.L),D 0 68 000 + + AE= 2000 0001 F000 0000 0008 0002 1008 31...16 15...0 X X X X A B C D Mémoire Externe D 0 0 0 0 1 F 0 0 0 A C B D $21008 $21009 D 3 0 0 0 0 2 0 0 0 A 2 Le langage Les modes d adressage 72 / 95

Adressage Absolu Exemple : MOVE.W $2000,$5000 C est une instruction permettant un transfert de mémoire à mémoire. On transfère ensuite les 16 bits contenus dans des adresses $2000,$2001 vers les adresses $5000,$5001 Remarques La taille précisée par l instruction peut être du type Octet (adresse paire ou impaire), Mot ou Long (adresse paire). Le langage Les modes d adressage 73 / 95

Adressage Absolu MOVE.W $2000,$5000 68 000 Mémoire Externe Destination A C B D $5000 $5001 Source A C B D $2000 $2001 Le langage Les modes d adressage 74 / 95

Adressage Immédiat Exemple : MOVEA.W #$2000,A 5 C est une instruction charge le registre A 5 et réalise une extension de signe. Remarques La taille précisée par l instruction peut être du type Mot ou Long. Le langage Les modes d adressage 75 / 95

Adressage Immédiat 68 000 MOVEA.W #8000,A 5 31...16 15...0 F F F F 8 0 0 0 Extension de signe A 5 Le langage Les modes d adressage 76 / 95

Adressage Immédiat 68 000 MOVE.B #$F4,D 2 31...16 15...0 x x x x x x F 4 Non affectés D 2 Le langage Les modes d adressage 77 / 95

Adressage Immédiat Rapide Exemple : MOVEQ.W #$8A,D 4 Remarques Cette instruction est codée sur 16 bits, elle charge D4 avec la valeur $8A et fait l extension de signe : D 4 = FFFFFF 8A la destination est toujours un registre de données ; la taille ne peut être que l octet ; il y a extension de signe sur 32 bits. Le langage Les modes d adressage 78 / 95

ADDQ et SUBQ Exemple : ADDQ.W #3,D 4 Index du déplacement 000 = 8, 001 = 1, 0110 = 2...111 = 7 ; Le langage Les modes d adressage 79 / 95

Adressage immédiat avec une adresse en destination Exemple : ADDQ.W #3,$2000 Memoire[$4000] = Memoire[$4000] + 3; Le langage Les modes d adressage 80 / 95

Accés au BIOS PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 PEA CHAINE(PC) MOVE #9, (A7) TRAP #1 ADD.L #8,A7 TRAP #0 CHAINE DC.B $0A, $0D, "HELLO MONDE CRUEL", $0A, $0D, 0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 81 / 95

Accés au BIOS PROG EQU $0FF0000 ORG PROG $0FF0000 LEA PILE (PC), A7 $0FF0002 PEA CHAINE(PC) $0FF0004 MOVE #9, (A7) $0FF0006 TRAP #1 $0FF0008 ADD.L #8,A7 $0FF000A TRAP #0 $0FF000C CHAINE DC.B $0A, $0D, "HELLO MONDE CRUEL", $0A, $0D DS.L 100 $0FF006E PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 82 / 95

Chargement de l adressse de pile Exécution de LEA PILE(PC), A 7 Bas de pile A 7 0 0 F F 0 0 6 E Table des symboles PILE 00FF006E CHAINE 00FF000A Le langage les entrées - sorties : Communication avec le BIOS 83 / 95

Chargement de l adresse de la chaîne à afficher Exécution de PEA CHAINE(PC) 0 0 F F 0 0 0 A Bas de pile A 7 0 0 F F 0 0 6 A Table des symboles PILE 00FF006E CHAINE 00FF000A Le langage les entrées - sorties : Communication avec le BIOS 84 / 95

Chargement du numéro de la fonction d affichage : 9 Exécution de MOVE #9, (A 7 ) 0 0 0 9 0 0 F F 0 0 0 A Bas de pile A 7 0 0 F F 0 0 6 8 Le langage les entrées - sorties : Communication avec le BIOS 85 / 95

Programme d accés au BIOS Exécution de TRAP #1 TRAP #1 Appel BIOS n 9 RS232 BI Le langage les entrées - sorties : Communication avec le BIOS 86 / 95

Programme d accés au BIOS Recherche chaîne de caractères RS232 BI Le langage les entrées - sorties : Communication avec le BIOS 87 / 95

Programme d accés au BIOS Envoie chaîne de caractères RS232 >HELLO MONDE CRUEL >. BI Le langage les entrées - sorties : Communication avec le BIOS 88 / 95

Les sous-programmes Transformons le programme précédent pour créer un sous-programme : Déclarer la pile système Choisir un registre pour le passage de paramètres l écriture du sous-programme dans une zone disctinte du programme principal l appel du sous-programme Le langage les entrées - sorties : Communication avec le BIOS 89 / 95

Les sous-programmes : un exemple PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 LEA CHAINE(PC), A1 BSR AFFICH BOUC BRA BOUC AFFICH MOVE D0, (A7) MOVE.L A1, (A7) MOVE #9, (A7) TRAP #1 ADDQ.L #6,A7 MOVE ( A7)+,D0 RTS CHAINE DC.B $0A, $0D, "HELLO EVERYBODY", $0A, $0D, 0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 90 / 95

Les transferts : MOVE PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 MOVE #134,D0 MOVE # 100,D1 MOVE.L D0, (A7) MOVE.L ( A7)+,D1 MOVEM.L D0 D7, (A7) TRAP #0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 91 / 95

Les transferts : MOVE PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 MOVE #134,D0 MOVE # 100,D1 MOVE.L D0, (A7) MOVE.L ( A7)+,D1 MOVEM.L D0 D7, (A7) TRAP #0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 92 / 95

Les données statiques : tables d entiers et chaines de caractères PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 programme p r i n c i p a l TRAP #0 TAB DC.B 1, 3, 5, 117, 2000, $AFB6, 23 CH1 DC.B " h e l l o world ",0 CH2 DC.B $0A, $0D, A, B,0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 93 / 95

Les opérations arithmétiques : La multiplication PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 MOVE MULU MOVE MULS #7,D0 #100,D0 # 4,D1 #100,D1 TRAP #0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 94 / 95

Les opérations arithmétiques : La division PROG EQU $0FF0000 ORG PROG LEA PILE (PC), A7 MOVE DIVU MOVE DIVS #1240,D0 # 1240,D1 #100,D0 #100,D1 TRAP #0 DS.L 100 PILE DS.L 1 END Le langage les entrées - sorties : Communication avec le BIOS 95 / 95