Programmation modulaire

Documents pareils
Rappels Entrées -Sorties

Architecture des ordinateurs

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

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

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

Rappels d architecture

Programmation assembleur : aperçu

Compilation (INF 564)

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

Gestion mémoire et Représentation intermédiaire

Le langage C. Séance n 4

Architecture des ordinateurs

Structure d un programme

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

Jeu d instructions NIOS II

Principe de fonctionnement des périphériques des ordinateurs en vue de la programmation. Patrick Cégielski

CM2 L architecture MIPS32

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exécution des instructions machine

Conception de circuits numériques et architecture des ordinateurs

Licence Sciences et Technologies Examen janvier 2010

Cours 1 : La compilation

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

Programmation impérative

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

Représentation d un entier en base b

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

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

TP 1. Prise en main du langage Python

IV- Comment fonctionne un ordinateur?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Autoroute A16. Système de Repérage de Base (SRB) - Localisation des Points de repère (PR) A16- A16+

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

Programmation système I Les entrées/sorties

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Logiciel de base. Première année ENSIMAG

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

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

Instructions relatives à l installation et à la suppression des pilotes d imprimante PostScript et PCL sous Windows, version 8

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Traduction des Langages : Le Compilateur Micro Java

TD Architecture des ordinateurs. Jean-Luc Dekeyser

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Département informatique de l université d Angers

Logiciel de Base. I. Représentation des nombres

Mathématiques appliquées à l informatique

Les fichiers. Chapitre 4

Informatique Générale

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

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

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

Feuille TD n 1 Exercices d algorithmique éléments de correction

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

R01 Import de données

Présentation. Référenciel : textes officiels

Corrigé des TD 1 à 5

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

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

Maple: premiers calculs et premières applications

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)

Tp 1 correction. Structures de données (IF2)

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Utilisation d objets : String et ArrayList

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Cours Informatique Master STEP

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Manuel d'installation de GESLAB Client Lourd

DNS ( DOMAIN NAME SYSTEM)

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours Informatique 1. Monsieur SADOUNI Salheddine

"-:-,'c-,, supports/ docs utilisés

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

Les structures. Chapitre 3

RMI le langage Java XII-1 JMF

Compétence 2 : Comparer, ranger, encadrer des nombres, les placer sur une droite graduée

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux


LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Conventions d écriture et outils de mise au point

Chapitre 1 : La gestion dynamique de la mémoire

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

TP 1 Prise en main de l environnement Unix

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

LE RESEAU GLOBAL INTERNET

Le prototype de la fonction main()

MISE EN SERVICE D UN RESEAU DE CAMERA DE VIDEOSURVEILLANCE

Ordinateurs, Structure et Applications

Architecture des ordinateurs Introduction à l informatique

Transcription:

Chapitre 18 Programmation modulaire Nous avons vu, lors de l initiation à la programmation, la notion de sous-programme (éventuellement sous des noms divers de fonction, procédure...) et en quoi la programmation modulaire est intéressante. Nous allons voir comment mettre en place les sous-programmes en langage machine du microprocesseur 8086/8088. 305

306 CHAPITRE 18. PROGRAMMATION MODULAIRE 18.1 Notions générales Voyons quels sont les problèmes posés par un programmeur pour la mise en place d un sousprogramme en langage machine. Repérage d un sous-programme.- Un sous-programme est repéré par un nom dans le cas d un langage évolué. Dans le cas d un langage machine il sera repéré par une adresse de début. Il s agit en général de l adresse de sa première instruction mais pas toujours : il peut lui-même contenir des sous-programmes qui viennent avant lui ; le sous-programme proprement dit peut-être précédé de (déclaration de) constantes. Arguments d un sous-programme.- Contrairement au cas des langages évolués, un sous-programme en langage machine n a pas d arguments. Autrement dit tous les paramètres sont passés comme variables globales, soit à l aide des registres, soit comme emplacement mémoire, soit à l aide de la pile que nous étudierons dans le chapitre suivant. Fin d un sous-programme.- Il faut évidemment indiquer la dernière instruction d un sous-programme, sinon toutes les instructions qui suivent cette instruction (considérées par nous comme la dernière) seront effectuées par le microprocesseur (en allant en particulier dans le sous-programme suivant). Un sous-programme se termine par une instruction spéciale indiquant qu il s agit de la dernière instruction. Adresse de retour.- Lorsqu on a terminé un sous-programme, le microprocesseur doit savoir où retourner dans le programme principal, autrement dit quelle est l adresse de retour. Pour faciliter la vie du programmeur, cette adresse est en général conservée par le microprocesseur, au moment de l appel du sous-programme, sur une pile (et qu importe ce que c est pour l instant), puis récupérée, également par le microprocesseur de façon transparente pour le programmeur, au moment du retour ; le programmeur n a pas à s en préoccuper. Place d un sous-programme.- On peut placer le code d un sous-programme où l on veut. Si on ne commence pas par le programme principal, il faut le faire précéder d un saut inconditionnel, ce qui permet de passer par-dessus le code du sous-programme. Appel d un sous-programme.- On pourrait appeler un sous-programme par un saut mais il est plus astucieux d utiliser une instruction spéciale (qui s occupe entre autre de placer l adresse de retour sur la pile), dont l opérande est l adresse du sous-programme.

18.2. CAS DU MICROPROCESSEUR 8086/8088 307 18.2 Cas du microprocesseur 8086/8088 18.2.1 Appel du sous-programme Langage symbolique.- Un sous-programme peut être appelé grâce à l instruction CALL (appel en anglais) dont l opérande est l adresse du sous-programme : CALL adresse Langage machine.- Uun sous-programme peut se trouver le même segment que le programme qui l appelle : la valeur du registre IP est alors changée mais il est inutile de changer celle du registre CS. Il peut aussi se trouver dans un autre segment : les valeurs des registres IP et CS nécessitent alors d être changées. L appel peut s effectuer de façon directe (en spécifiant l adresse par une constante) ou indirecte (l adresse se trouve dans un registre ou à un emplacement mémoire) : Dans le cas d un appel intra-segmentaire direct, on précise l adresse par un déplacement (entier relatif) par rapport à la valeur en cours de IP : 1110 1000 déplacement bas déplacement haut L appel a lieu pour un programme commençant en [IP] + déplacement, où [IP] est l adresse de l instruction sui suit l appel. Dans le cas d un appel inter-segmentaire direct, on précise la valeur de IP et également celle de CS : 1001 1010 IP bas IP haut CS bas CS haut Dans le cas d un appel intra-segmentaire indirect, on précise la valeur de IP : 1111 1111 mod 010 r/m Dans le cas d un appel inter-segmentaire indirect, on précise la valeur de IP et de CS, contenus dans un emplacement mémoire (un registre n est pas suffisant) : 1111 1111 mod 011 r/m avec mod 11. Dans ce cas [IP] et [CS] sont remplacés par les contenus des cases mémoire (16 bits) définies par l adresse effective et l adresse effective + 2. 18.2.2 Retour d un sous-programme Langage symbolique.- Un sous-programme doit contenir au moins une instruction (pour urn ou our), indiquant la fin du sous-programme (et donc le retour au programme principal) de façon inconditionnelle : pour le retour d un sous-programme intra-segmentaire et : F (avec F pour Far, lointain en anglais) pour le retour d un sous-programme inter-segmentaire. Langage machine.- Il existe deux instructions de retour : le retour court est codé sur un octet par 1100 0011, soit C3h ; le retour long est également codé sur un octet par 1100 1011, soit CBh.

308 CHAPITRE 18. PROGRAMMATION MODULAIRE 18.2.3 Un exemple Écrivons un programme en langage machine qui va chercher un entier naturel n, compris entre 0 et 255, à l adresse 3000 :402 et qui place la valeur de l octet faible de 2 n +n à l adresse 3000 :404. Le calcul de cette fonction effectué grâce à un sous-programme écrit en langage machine. Nous avons déjà écrit un programme en langage machine permettant de calculer l exponentiation x n. Nous retrouverons ainsi souvent des parties de programme déjà écrites. Autant les placer dans des sous-programmes et les réutiliser. De façon à réutiliser au mieux notre sous-programme d exponentiation vu précédemment, le programme principal placera 2 à l adresse 3000 :400, fera appel au sous-programme de calcul de l exponentielle, qui place le résultat à l adresse &H0004, puis ajoutera le contenu de la case mémoire 3000 :402 à celui de celle d adresse 3000 :404. Le programme s écrit de la façon suivante en langage symbolique : MOV AX,3000 MOV DS,AX MOV WORD PTR [0400],2 CALL EXP MOV AX,[0402] ADD [0404],AX EXP: MOV CX,[0402] MOV BX,[0400] MOV AX,1 DEBUT: MUL BX DEC CX JNZ DEBUT MOV [0404],AX L appel, et donc le retour, du sous-programme du programme en langage machine peut être court. Traduisons maintenant ce programme écrit en langage symbolique en langage machine, en recopiant pour le sous-programme le programme écrit pour l exponentiation : B8 00 30 8E D8 C7 06 00 04 02 00 E8 08 00 A1 02 04 01 06 04 04 C3 8B 0E 02 04 8B 1E 00 04 B8 01 00 F7 E3 49 75 FB A3 04 04 C3 Codons ce programme :

18.3. HISTORIQUE 309 -E CS:100 B8 00 30 -E CS:103 8E D8 -E CS:105 C7 06 00 04 02 00 -E CS:10C E8 08 00 -E CS:10E A1 02 04 -E CS:111 01 06 04 04 -E CS:115 C3 -E CS:116 8B 0E 02 04 -E CS:11A 8B 1E 00 04 -E CS:11E B8 01 00 -E CS:121 F7 E3 -E CS:123 49 -E CS:124 75 FB -E CS:126 A3 04 04 -E CS:129 C3 -R BX BX 0000 : -R CX CX 0000 :02A -N EXPADD.COM -W Ecriture de 0002A octets -Q Si on place 3 comme donnée : -E 3000:402 03 -q C:\COM> EXPADD.COM Après exécution du programme expadd.com, on vérifie que l on a bien 2 3 + 3 = 11 = Bh à l emplacement mémoire choisi : -D 3000:400 3000:0400 02 00 03 00 0B 00 00 00-00 00 00 00 00 00 00 00... 3000:0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... 3000:0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00... -q 18.3 Historique Les modèles de calcul, dont la machine de Turing, utilisent la notion de sous-programme Comme nous l avons vu au chapitre 15, le premier langage symbolique (EDSAC, 1949) ne prévoit pas d instructions particulière pour manipuler les sous-programmes. Un sous-programme est utilisé dès le premier programme proposé, celui sur le calcul des carrés. Le mécanisme de sous-programme est alors entièrement géré par l utilisateur.