Chapitre VI. Programmation de l Ordinateur de Base

Documents pareils
Rappels Entrées -Sorties

Représentation d un entier en base b

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Conversion d un entier. Méthode par soustraction

Informatique Générale

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

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

Les opérations binaires

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Rappels d architecture

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

Architecture des ordinateurs Introduction à l informatique

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Architecture des ordinateurs

Architecture matérielle des systèmes informatiques

IV- Comment fonctionne un ordinateur?

Conception de circuits numériques et architecture des ordinateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

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

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

Cours 1 : Qu est-ce que la programmation?

V- Manipulations de nombres en binaire


Programmation assembleur : aperçu

Plan du cours Cours théoriques. 29 septembre 2014

IFT1215 Introduction aux systèmes informatiques

Logiciel de Base. I. Représentation des nombres

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

Représentation des Nombres

Une version javascript sera disponible directement dans le cours prochainement.

Le langage C. Séance n 4

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithme. Table des matières

CM2 L architecture MIPS32

Traduction des Langages : Le Compilateur Micro Java

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

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

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

Microprocesseur + Logiciel

ALGORITHMIQUE ET PROGRAMMATION En C

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

Programmation en langage C

Cours Informatique Master STEP

1. Structure d'un programme FORTRAN 95

Architecture des ordinateurs

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

Présentation du PL/SQL

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

TP 1 : 1 Calculs en binaire, octal et hexadécimal

IFT2880 Organisation des ordinateurs et systèmes

TD3: tableaux avancées, première classe et chaînes

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

Chapitre 10 Arithmétique réelle

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

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

Partie 7 : Gestion de la mémoire

ACTIVITÉ DE PROGRAMMATION

Licence Sciences et Technologies Examen janvier 2010

Organisation des Ordinateurs

Langage Fortran (Base)

Structure d un programme

REALISATION d'un. ORDONNANCEUR à ECHEANCES

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

Compilation (INF 564)

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Le codage informatique

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

Architecture de l ordinateur

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

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

TP 1. Prise en main du langage Python

Cours 1 : La compilation

Examen Médian - 1 heure 30

Ordinateurs, Structure et Applications

Description pas à pas des différents processus d installation, configuration, saisie des résultats et export des données.

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

Mathématiques appliquées à l informatique

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

Chapitre 1 I:\ Soyez courageux!

Jeu d instructions NIOS II

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

Le langage C. Introduction, guide de reference

CONFIGURATION DE L AUTOMATE SIEMENS

Enregistreur sans papier. Interface LON. B Description des interfaces 10.99/

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

Algorithmique et programmation : les bases (VBA) Corrigé

Langage Fortran. Support de cours

Exécution des instructions machine

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

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

PIC : COURS ASSEMBLEUR

Programmation C++ (débutant)/instructions for, while et do...while

Transcription:

Chapitre VI Programmation de l Ordinateur de Base

Le langage machine Le langage machine Les programmes pour un ordinateur peuvent être écrits dans multiples langages. Les langages de programmation peuvent se diviser en quatre catégories: 1 Le code binaire. Il s agit d une séquence d instructions et d opérandes représentés sous forme binaire, reflétant le contenu exact de la mémoire de l ordinateur. 2 Le code octal ou hexadécimal. Ceci est une transcription équivalente du code binaire en une représentation hexadécimale ou octale. 3 Code symbolique. Ici, chaque instruction est représentée par un ou plusieurs symboles codes. Un compilateur est alors nécessaire pour transcrire chaque instruction en une instruction codée en binaire à être exécutée par l ordinateur. 4 Langages de programmation à un niveau plus élevé. Dans ces langages, chaque instruction peut être transcrite par le compilateur en une séquence de plusieurs instructions codées en binaire. Le C, le Java, le Fortran en sont des exemples.

Le langage machine Example 1 (Addition de deux nombres). Voici un programme qui additionne deux nombres écrits dans les quatre types de langages de programmation. Programme binaire Programme hexadécimal Programme symbolique Programme Fortran

Le langage machine Dans ce chapitre, nous allons utiliser les mêmes 25 instructions que celles de l ordinateur de base du Chapitre 5. Ces instructions sont récapitulées dans la Table 5-2 de votre manuel (page 133) et sont aussi redéfinies dans la Table 6-1 du manuel (page 175), où: le symbole m est utilisé pour dénoter l adresse effective, le symbole M est utilisé pour se référer au mot de la mémoire qui se trouve à l adresse effective m.

Le langage machine Table 1: Instructions de l ordinateur

Le langage machine Langage machine. Un programme en langage machine est représenté en forme binaire, octale, ou hexadécimale (de la première ou de la deuxième catégorie). Aucune transcription (compilateur) n est nécessaire pour exécuter un programme en langage machine. Langage assembleur. Un programme écrit en langage assembleur est un programme symbolique (de la catégorie 3). Le compilateur qui transcrit du langage assembleur en code binaire est appelé un assembleur.

Le langage machine Example 2 (Addition de deux nombres). Programme symbolique Programme en assembleur Les programmes en assembleur sont plus pratiques à utiliser que les programmes symboliques ordinaires, car ils permettent à l utilisateur de: représenter une adresse hexadécimale avec une adresse symbolique, et représenter un opérande hexadécimal avec un opérande décimal.

Langage assembleur Langage assembleur Pratiquement chaque microprocesseur/ordinateur possède son propre langage assembleur. Les règles de l écriture en langage assembleur sont documentées et publiées dans les manuels de chaque microprocesseur. Ici, nous utiliserons un langage assembleur qui est particulier à l ordinateur de base décrit dans le chapitre 5. Dans ce qui suit, nous allons formuler les règles de ce langage assembleur.

Langage assembleur Règles du langage assembleur Règles du langage assembleur Chaque ligne d un programme en assembleur est arrangée en 3 colonnes, appelées champs: [étiquette,] instruction [/commentaire] 1 Le champ étiquette peut être vide, ou peut spécifier une adresse symbolique. 2 Le champ instruction spécifie une instruction machine, ou une pseudo-instruction. 3 Le champ commentaire peut être vide, ou peut contenir un commentaire. Une adresse symbolique, dans le champ étiquette, consiste en une lettre suivie d un, deux ou aucuns caractères alphanumériques. Le champ instruction peut spécifier: 1 Une instruction référencée à la mémoire (MRI) 2 Une instruction référencée à un registre, ou une instruction d entrée/sortie (non-mri) 3 Une pseudo-instruction avec ou sans opérande

Langage assembleur Règles du langage assembleur Une instruction référencée à la mémoire consiste en deux ou trois symboles séparés par des espaces: opcode-symbole adresse-symbolique [I] L opcode-symbole est un symbole de trois lettres qui définit une opération MRI de la Table 1. Le second code est une adresse symbolique. Le troisième symbole est optionnel. Si présent, c est la lettre I. La présence de I dans une MRI dénote une instruction à adressage indirect, tandis que son absence dénote une instruction à adressage direct. Une instruction non-mri est désignée par l un des symboles de 3 lettres de la Table 1 et représente une instruction référencée à un registre, ou bien une instruction d entrée/sortie. Example 3. Voici des exemples de symboles qui peuvent être placés dans le champ instruction. CLA non-mri ADD OPR adressage direct MRI ADD PTR I adressage indirecte MRI

Langage assembleur Règles du langage assembleur Une pseudo-instruction n est pas une instruction machine, et donc elle n est pas transcrite en une instruction codée par l assembleur. Une pseudo-instruction est plutôt une instruction qui donne à l assembleur de l information sur une instruction particulière dans le programme. Nous supposerons que l assembleur défini dans ce chapitre supporte les quatre pseudo-instructions qui se trouvent dans la Table 2. Table 2: Définitions de pseudo-instructions Symbole ORG N END DEC N HEX N Information pour l assembleur Le nombre hexadécimal N est la location mémoire de l opérande ou de l instruction qui se trouve à la prochaine ligne Dénote la fin du programme symbolique N est un nombre décimal signé à être converti en binaire N est un nombre hexadécimal signé à être converti en binaire

Langage assembleur Règles du langage assembleur ORG (origin): informe l assembleur que l instruction ou l opérande dans la ligne qui suit est placé à la location mémoire spécifiée par le nombre hexadécimal écrit à droite de ORG. Il est possible d utiliser ORG plus d une fois dans un programme pour spécifier plus d un segment en mémoire. Le symbole END informe l assembleur que le programme est terminé. DEC N et HEX N spécifient la base de N.

Langage assembleur Règles du langage assembleur Example 4 (Soustraction de deux nombres). Table 3: Programme en langage assembleur pour faire la soustraction de deux nombres

Langage assembleur Transcription en binaire Transcription en binaire Pour qu un programme soit exécuté par n importe quel ordinateur, il doit être converti en code machine qui soit propre à cet ordinateur par un compilateur approprié. Un assembleur est un compilateur qui transcrit chaque instruction écrite en assembleur en son équivalent binaire.

Langage assembleur Transcription en binaire Example 5. La transcription du programme écrit en assembleur de la soustraction de deux nombres (présenté dans l exemple précédent) en son équivalent en code machine est montrée dans la table suivante. Table 4: Transcription en code machine du programme de soustraction de deux nombres

Langage assembleur Passes de compilation Passes de compilation La compilation d un programme écrit en assembleur vers un code machine par l assembleur s accomplit en deux passages (parcours du programme). Pendant le premier passage: une location mémoire (adresse) est assignée à chaque instruction et opérande (ORG et END n ont pas d assignations mémoire, car ce sont des pseudo-instructions). une table de symboles d adresses définissant les adresses en hexadécimal de chaque adresse symbolique est construite. Par exemple, la table des symboles d adresses du programme de l exemple précédent est montrée ci-dessous: Symbole d Adresses Adresse Hexadécimale MIN 106 SUB 107 DIF 108 Aucun code d instruction n est créé lors du premier passage.

Langage assembleur Passes de compilation Lors du second passage du programme en assembleur: la table des symboles d adresses formée au premier passage est utilisée pour déterminer la valeur de l adresse de chaque instruction. un code complet est créé pour chaque instruction. Example 6. L instruction LDA SUB est transcrite lors du second passage en code binaire en: examinant l opcode hexadécimal de l opération LDA de la table Table 1 2, déterminant la valeur hexadécimale de l étiquette SUB à partir de la table des symboles d adresses formée lors du premier passag 107, et remettant le bit 15 du code de l instruction à 0, puisque l instruction est une adresse directe MRI (la lettre I n est pas présente) Le code complet de l instruction en hexadécimal est alors formé en assemblant les segments ci-dessus 2107

Boucles de programme Boucles de programme Considérez le programme Fortran suivant, qui fait l addition de 100 entiers, et range le résultat dans un mot de la mémoire. DIMENSION A(100) INTEGER SUM, A SUM = 0 DO 3 J=1, 100 3 SUM = SUM + A(J) Il est possible d écrire un programme assembleur qui fait la même chose. Le programme est montré dans la Table 5. Les entiers qu il faut ajouter sont ranges dans des locations mémoire consécutives, à partir de l adresse (150) 16 (ligne (19) 10 du code). Les initialisations de variables sont faites aux lignes (13) 10 jusqu à (17) 10 du code. La partie boucle du programme se trouve entre aux lignes (7) 10 jusqu à (10) 10 du code.

Boucles de programme Table 5: Programme en assembleur pour ajouter 100 nombres

Programmation des opérations logiques et arithmétiques Programmation des opérations logiques et arithmétiques Les opérations qui ne sont pas incluses dans l ensemble des instructions machine doivent être implémentées par un programme. Les opérations qui peuvent être effectuées par une unique instruction machine sont dites implémentées en matériel. Les opérations qui sont faites par un programme (un ensemble d instructions) sont dites implémentées en logiciel. L implémentation en matériel est plus coûteuse que l implémentation en logiciel, mais l exécution des opérations est plus rapide.

Programmation des opérations logiques et arithmétiques Programme de multiplication Programme de multiplication L ordinateur qui a été conçu au chapitre 5 ne contient pas d instructions pour effectuer une multiplication. Par conséquent, une implémentation logicielle est nécessaire pour donner à l ordinateur la capacité de multiplier deux nombres. Pour simplifier l implémentation logicielle de l opération de multiplication de l ordinateur de base, on suppose que les deux opérandes sont non signés, et qu ils n ont pas plus de 8 bits significatifs, de façon à ce que le produit ne dépasse pas la capacité de 16 bits significatifs. Le schéma de la Figure 1 montre la procédure suivie pour l implémentation logicielle de l opération de multiplication. Le programme en assembleur de la multiplication est montré dans la Table 6.

Programmation des opérations logiques et arithmétiques Programme de multiplication Figure 1: Schéma du programme de multiplication

Programmation des opérations logiques et arithmétiques Programme de multiplication Table 6: Programme de multiplication de deux nombres positifs

Programmation des opérations logiques et arithmétiques Addition en précision double Addition en précision double Pour augmenter la précision de l addition, les opérandes peuvent être rangés dans deux mots de mémoire ou plus, au lieu de seulement un. Un nombre rangé dans deux mots de la mémoire est dit avoir une précision double. Lorsque des opérandes en précision double sont utilisés pour effectuer certaines opérations, ils doivent être traités d une manière spéciale. Un programme en assembleur qui additionne deux nombres en précision double est montré dans la Table 7.

Programmation des opérations logiques et arithmétiques Addition en précision double Table 7: Programme pour additionner deux nombres en précision double

Programmation des opérations logiques et arithmétiques Opérations logiques Opérations logiques Une opération logique peut aussi être implémentée en logiciel si elle n est pas supportée directement par l ALU. Par exemple, l ALU de l ordinateur de base ne possède pas d implémentation matérielle de l opération OU, mais supporte matériellement les opérations ET et NON. Puisque (x y) peut s exprimer aussi comme (x y ), l opération OU peut être implémentée en logiciel. Un programme symbolique qui fait cela est montré ci-dessous. LDA A Charger le premier opérande A CMA Complémenter pour obtenir A STA TMP Ranger A dans une location temporaire LDA B Charger le deuxième opérande B CMA Complémenter pour obtenir B AND TMP Ajouter à A pour obtenir (x y ) CMA Complémenter pour obtenir (x y)

Programmation des opérations logiques et arithmétiques Opérations de décalage Opérations de décalage L ordinateur de base possède une implémentation matérielle de décalage circulaire. Une opération de décalage à droite peut être réalisée en logiciel par les instructions suivantes: CLE CIR Une opération de décalage à gauche peut être réalisée en logiciel par les instructions suivantes: CLE CIL

Programmation des opérations logiques et arithmétiques Opérations de décalage Une opération de décalage à droite arithmétique peut être réalisée en logiciel par les instructions suivantes: CLE /Mettre E à 0 SPA /Sauter l instruction suivante si AC > 0; E reste 0 CME /AC < 0; mettre E à 1 CIR /Décalage circulaire de E et AC Example 7 (Décalage arithmétique à gauche). Ecrivez un programme en assembleur qui implémente une opération de décalage arithmétique à gauche.

Sous-routines Sous-routines Appeler une sous-routine dans un programme se fait en utilisant l instruction BSA. Pour illustrer comment utiliser l instruction BSA dans ce contexte, une sous-routine qui multiplie le contenu de AC par 16 (en décalant AC de 4 bits vers la gauche) est montré dans la Table 8. La sous-routine est appelée deux fois dans le programme. Une fois à la ligne (101) 16 et une autre fois a la ligne (104) 16. Lorsque la première instruction BSA est exécutée pour appeler la sous-routine SH4, l unité de contrôle range l adresse de retour 102 à l adresse définie symboliquement par SH4 (c est à dire = (109) 16 ). L unité de contrôle place aussi la valeur SH4+1 (= (10A) 16 ) dans le compteur de programme PC pour commencer l exécution de la sous-routine. La dernière instruction de la sous-routine, à la location (10F ) 16 (appelée l instruction de retour de la sous-routine) exécute un embranchement inconditionnel indirect vers la location (102) 16. BSA est appelée l instruction d appel de la sous-routine.

Sous-routines Table 8: Programme pour montrer l utilisation de sous-routines

Programmation pour les entrées/sorties Programmation pour les entrées/sorties La Table 9(a) montre les instructions nécessaires pour entrer un caractère, l afficher, et ensuite le ranger en mémoire. La Table 9(b) montre les instructions nécessaires pour afficher un caractère qui est initialement rangé en mémoire. Table 9: Programmes pour l entrée/sortie d un caractère

Programmation pour les entrées/sorties Manipulation de caractères Manipulation de caractères Le programme de la Table 10 montre une sous-routine appelée IN2 qui entre deux caractères de 8 bits chacun, et les assemble en un mot de 16 bits. Table 10: Sous-routine pour entrer et assembler deux caractères

Programmation pour les entrées/sorties Manipulation de caractères Le programme de la Table 11 utilise la sous-routine IN2 pour entrer une chaîne de caractères du clavier, assembler deux caractères en un mot, et ranger le tout dans un tampon qui débute à l adresse (500) 16 de la mémoire. Table 11: Programme pour ranger des caractères d entrée dans un tampon

Programmation pour les entrées/sorties Interruptions de programme Interruptions de programme Le système d interruptions permet au programme de se dérouler jusqu à ce qu un appareil d entrée/sortie lève son drapeau. Lorsqu un appareil est mis à 1, l ordinateur termine l exécution de l instruction en cours puis se focalise sur l interruption, en: 1 Rangeant l adresse de retour à la location 0 de la mémoire 2 Exécuter l instruction à la location 1, qui est un embranchement inconditionnel vers l adresse de base de la routine de service. La routine de service doit contenir des instructions pour effectuer les taches suivantes: 1 Sauvegarder le contenu des registres du processeur (AC et E de cet ordinateur de base) 2 Vérifier quel drapeau d entrée/sortie est levé 3 S occuper de l appareil dont le drapeau est levé 4 Restaurer le contenu des registres du processeur 5 Réactiver le système d interruption 6 Retourner au programme interrompu

Programmation pour les entrées/sorties Interruptions de programme Un exemple de programme qui s occupe d une interruption est montré dans la Table 12. La location 0 est réservée pour l adresse de retour. La location 1 contient un embranchement inconditionnel direct vers la routine de service SRV. Le programme principal débute à la location (100) 16 de la mémoire. La routine de service débute à la location (200) 16 de la mémoire. Le programme principal contient une instruction ION au tout début, pour activer le système d interruptions. Le circuit d interruption est éteint dans le matériel par la micro-operation RT 2 : IEN 0 juste avant l exécution de la routine de service des interruptions. Il est donc important de réactiver le système d interruptions juste avant la fin de la routine de service. Ceci se fait dans le logiciel en incluant l instruction ION.

Programmation pour les entrées/sorties Interruptions de programme Table 12: Programme pour s occuper d une interruption