chapitre vi programmation de l’ordinateur de basemgarz042/ceg2536/notes/chapitre6.pdfle langage...

36
Chapitre VI Programmation de l’Ordinateur de Base Wail Gueaieb (Universit´ e d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 1 / 37

Upload: others

Post on 12-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Chapitre VI

Programmation de l’Ordinateur de Base

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 1 / 37

Page 2: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Le langage machine

Les programmes pour un ordinateur peuvent etre ecrits dans multiples langages.

Les langages de programmation peuvent se diviser en quatre categories:1 Le code binaire. Il s’agit d’une sequence d’instructions et d’operandes representes sous forme binaire,

refletant le contenu exact de la memoire de l’ordinateur.2 Le code octal ou hexadecimal. Ceci est une transcription equivalente du code binaire en une

representation hexadecimale ou octale.3 Code symbolique. Ici, chaque instruction est representee par un ou plusieurs symboles codes. Un

compilateur est alors necessaire pour transcrire chaque instruction en une instruction codee enbinaire a etre executee par l’ordinateur.

4 Langages de programmation a un niveau plus eleve. Dans ces langages, chaque instruction peut etretranscrite par le compilateur en une sequence de plusieurs instructions codees en binaire. Le C, leJava, le Fortran en sont des exemples.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 3 / 37

Page 3: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Example 1 (Addition de deux nombres).

Voici un programme qui additionne deux nombres ecrits dans les quatre types de langages deprogrammation.

Programme binaire Programme hexadecimal

Programme symbolique Programme Fortran

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 4 / 37

Page 4: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Dans ce chapitre, nous allons utiliser les memes 25 instructions que celles de l’ordinateur debase du Chapitre 5.

Ces instructions sont recapitulees dans la Table 5-2 de votre manuel (page 133) et sont aussiredefinies dans la Table 6-1 du manuel (page 175), ou:

le symbole m est utilise pour denoter l’adresse effective,le symbole M est utilise pour se referer au mot de la memoire qui se trouve a l’adresse effective m.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 5 / 37

Page 5: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Table 1: Instructions de l’ordinateur

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 6 / 37

Page 6: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Langage machine. Un programme en langage machine est represente en forme binaire,octale, ou hexadecimale (de la premiere ou de la deuxieme categorie). Aucune transcription(compilateur) n’est necessaire pour executer un programme en langage machine.

Langage assembleur. Un programme ecrit en langage assembleur est un programmesymbolique (de la categorie 3). Le compilateur qui transcrit du langage assembleur en codebinaire est appele un assembleur.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 7 / 37

Page 7: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Le langage machine

Example 2 (Addition de deux nombres).

Programme symbolique Programme en assembleur

Les programmes en assembleur sont plus pratiques a utiliser que les programmes symboliquesordinaires, car ils permettent a l’utilisateur de:

representer une adresse hexadecimale avec une adresse symbolique, et

representer un operande hexadecimal avec un operande decimal.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 8 / 37

Page 8: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur

Langage assembleur

Pratiquement chaque microprocesseur/ordinateur possede son propre langage assembleur.

Les regles de l’ecriture en langage assembleur sont documentees et publiees dans les manuelsde chaque microprocesseur.

Ici, nous utiliserons un langage assembleur qui est particulier a l’ordinateur de base decritdans le chapitre 5.

Dans ce qui suit, nous allons formuler les regles de ce langage assembleur.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 9 / 37

Page 9: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Regles du langage assembleur

Regles du langage assembleur

Chaque ligne d’un programme en assembleur est arrangee en 3 colonnes, appelees champs:[etiquette,] instruction [/commentaire]

1 Le champ etiquette peut etre vide, ou peut specifier une adresse symbolique.2 Le champ instruction specifie une instruction machine, ou une pseudo-instruction.3 Le champ commentaire peut etre vide, ou peut contenir un commentaire.

Une adresse symbolique, dans le champ etiquette, consiste en une lettre suivie d’un, deux ouaucuns caracteres alphanumeriques.

Le champ instruction peut specifier:1 Une instruction referencee a la memoire (MRI)2 Une instruction referencee a un registre, ou une instruction d’entree/sortie (non-MRI)3 Une pseudo-instruction avec ou sans operande

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 10 / 37

Page 10: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Regles du langage assembleur

Une instruction referencee a la memoire consiste en deux ou trois symboles separes par desespaces: opcode-symbole adresse-symbolique [I]

L’opcode-symbole est un symbole de trois lettres qui definit une operation MRI de la Table 1.Le second code est une adresse symbolique.Le troisieme symbole est optionnel. Si present, c’est la lettre “I”.

La presence de “I” dans une MRI denote une instruction a adressage indirect, tandis que sonabsence denote une instruction a adressage direct.

Une instruction non-MRI est designee par l’un des symboles de 3 lettres de la Table 1 etrepresente une instruction referencee a un registre, ou bien une instruction d’entree/sortie.

Example 3.

Voici des exemples de symboles qui peuvent etre places dans le champ instruction.CLA non-MRIADD OPR adressage direct MRIADD PTR I adressage indirecte MRI

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 11 / 37

Page 11: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Regles du langage assembleur

Une pseudo-instruction n’est pas une instruction machine, et donc elle n’est pas transcrite enune instruction codee par l’assembleur.

Une pseudo-instruction est plutot une instruction qui donne a l’assembleur de l’informationsur une instruction particuliere dans le programme.

Nous supposerons que l’assembleur defini dans ce chapitre supporte les quatrepseudo-instructions qui se trouvent dans la Table 2.

Table 2: Definitions de pseudo-instructions

Symbole Information pour l’assembleurORG N Le nombre hexadecimal N est la location memoire de l’operande

ou de l’instruction qui se trouve a la prochaine ligneEND Denote la fin du programme symboliqueDEC N N est un nombre decimal signe a etre converti en binaireHEX N N est un nombre hexadecimal signe a etre converti en binaire

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 12 / 37

Page 12: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Regles du langage assembleur

ORG (origin): informe l’assembleur que l’instruction ou l’operande dans la ligne qui suit estplace a la location memoire specifiee par le nombre hexadecimal ecrit a droite de ORG.

Il est possible d’utiliser ORG plus d’une fois dans un programme pour specifier plus d’unsegment en memoire.

Le symbole END informe l’assembleur que le programme est termine.

DEC N et HEX N specifient la base de N.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 13 / 37

Page 13: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Regles du langage assembleur

Example 4 (Soustraction de deux nombres).

Table 3: Programme en langage assembleur pour faire la soustraction de deux nombres

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 14 / 37

Page 14: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Transcription en binaire

Transcription en binaire

Pour qu’un programme soit execute par n’importe quel ordinateur, il doit etre converti encode machine qui soit propre a cet ordinateur par un compilateur approprie.

Un assembleur est un compilateur qui transcrit chaque instruction ecrite en assembleur enson equivalent binaire.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 15 / 37

Page 15: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Transcription en binaire

Example 5.

La transcription du programme ecrit en assembleur de la soustraction de deux nombres (presentedans l’exemple precedent) en son equivalent en code machine est montree dans la table suivante.

Table 4: Transcription en code machine duprogramme de soustraction de deux nombres

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 16 / 37

Page 16: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Passes de compilation

Passes de compilation

La compilation d’un programme ecrit en assembleur vers un code machine par l’assembleurs’accomplit en deux passages (parcours du programme).

Pendant le premier passage:une location memoire (adresse) est assignee a chaque instruction et operande (ORG et END n’ontpas d’assignations memoire, car ce sont des pseudo-instructions).une table de symboles d’adresses definissant les adresses en hexadecimal de chaque adressesymbolique est construite. Par exemple, la table des symboles d’adresses du programme de l’exempleprecedent est montree ci-dessous:

Symbole d’Adresses Adresse HexadecimaleMIN 106SUB 107DIF 108

Aucun code d’instruction n’est cree lors du premier passage.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 17 / 37

Page 17: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Langage assembleur Passes de compilation

Lors du second passage du programme en assembleur:la table des symboles d’adresses formee au premier passage est utilisee pour determiner la valeur del’adresse de chaque instruction.un code complet est cree pour chaque instruction.

Example 6.

L’instruction LDA SUB est transcrite lors du second passage en code binaire en:examinant l’opcode hexadecimal de l’operation LDA de la table Table 1 ⇒ 2,determinant la valeur hexadecimale de l’etiquette SUB a partir de la table des symboles d’adressesformee lors du premier passag ⇒ 107, etremettant le bit 15 du code de l’instruction a 0, puisque l’instruction est une adresse directe MRI (lalettre “I” n’est pas presente)

Le code complet de l’instruction en hexadecimal est alors forme en “assemblant” lessegments ci-dessus ⇒ 2107

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 18 / 37

Page 18: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Boucles de programme

Boucles de programme

Considerez le programme Fortran suivant, qui fait l’addition de 100 entiers, et range leresultat dans un mot de la memoire.

DIMENSION A(100)INTEGER SUM, ASUM = 0DO 3 J=1, 100

3 SUM = SUM + A(J)

Il est possible d’ecrire un programme assembleur qui fait la meme chose. Le programme estmontre dans la Table 5.

Les entiers qu’il faut ajouter sont ranges dans des locations memoire consecutives, a partirde l’adresse (150)16 (ligne (19)10 du code).

Les initialisations de variables sont faites aux lignes (13)10 jusqu’a (17)10 du code.

La partie “boucle” du programme se trouve entre aux lignes (7)10 jusqu’a (10)10 du code.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 19 / 37

Page 19: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Boucles de programme

Table 5: Programme en assembleur pour ajouter 100 nombres

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 20 / 37

Page 20: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques

Programmation des operations logiques et arithmetiques

Les operations qui ne sont pas incluses dans l’ensemble des instructions machine doivent etreimplementees par un programme.

Les operations qui peuvent etre effectuees par une unique instruction machine sont ditesimplementees en materiel.

Les operations qui sont faites par un programme (un ensemble d’instructions) sont ditesimplementees en logiciel.

L’implementation en materiel est plus couteuse que l’implementation en logiciel, maisl’execution des operations est plus rapide.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 21 / 37

Page 21: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Programme de multiplication

Programme de multiplication

L’ordinateur qui a ete concu au chapitre 5 ne contient pas d’instructions pour effectuer unemultiplication.

Par consequent, une implementation logicielle est necessaire pour donner a l’ordinateur lacapacite de multiplier deux nombres.

Pour simplifier l’implementation logicielle de l’operation de multiplication de l’ordinateur debase, on suppose que les deux operandes sont non signes, et qu’ils n’ont pas plus de 8 bitssignificatifs, de facon a ce que le produit ne depasse pas la capacite de 16 bits significatifs.

Le schema de la Figure 1 montre la procedure suivie pour l’implementation logicielle del’operation de multiplication.

Le programme en assembleur de la multiplication est montre dans la Table 6.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 22 / 37

Page 22: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Programme de multiplication

Figure 1: Schema du programme demultiplication

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 23 / 37

Page 23: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Programme de multiplication

Table 6: Programme de multiplication de deux nombres positifs

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 24 / 37

Page 24: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Addition en precision double

Addition en precision double

Pour augmenter la precision de l’addition, les operandes peuvent etre ranges dans deux motsde memoire ou plus, au lieu de seulement un.

Un nombre range dans deux mots de la memoire est dit avoir une precision double.

Lorsque des operandes en precision double sont utilises pour effectuer certaines operations,ils doivent etre traites d’une maniere speciale.

Un programme en assembleur qui additionne deux nombres en precision double est montredans la Table 7.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 25 / 37

Page 25: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Addition en precision double

Table 7: Programme pour additionner deux nombres en precision double

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 26 / 37

Page 26: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Operations logiques

Operations logiques

Une operation logique peut aussi etre implementee en logiciel si elle n’est pas supporteedirectement par l’ALU.

Par exemple, l’ALU de l’ordinateur de base ne possede pas d’implementation materielle del’operation OU, mais supporte materiellement les operations ET et NON.

Puisque (x ∨ y) peut s’exprimer aussi comme (x ′ ∧ y ′)′, l’operation OU peut etreimplementee en logiciel. Un programme symbolique qui fait cela est montre ci-dessous.

LDA A Charger le premier operande ACMA Complementer pour obtenir A’STA TMP Ranger A’ dans une location temporaireLDA B Charger le deuxieme operande BCMA Complementer pour obtenir B’AND TMP Ajouter a A’ pour obtenir (x ′ ∧ y ′)′

CMA Complementer pour obtenir (x ∨ y)

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 27 / 37

Page 27: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Operations de decalage

Operations de decalage

L’ordinateur de base possede une implementation materielle de decalage circulaire.

Une operation de decalage a droite peut etre realisee en logiciel par les instructions suivantes:

CLE

CIR

Une operation de decalage a gauche peut etre realisee en logiciel par les instructionssuivantes:

CLE

CIL

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 28 / 37

Page 28: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation des operations logiques et arithmetiques Operations de decalage

Une operation de decalage a droite arithmetique peut etre realisee en logiciel par lesinstructions suivantes:

CLE /Mettre E a 0SPA /Sauter l’instruction suivante si AC > 0; E reste 0CME /AC < 0; mettre E a 1CIR /Decalage circulaire de E et AC

Example 7 (Decalage arithmetique a gauche).

Ecrivez un programme en assembleur qui implemente une operation de decalage arithmetique agauche.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 29 / 37

Page 29: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

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 quimultiplie le contenu de AC par 16 (en decalant AC de 4 bits vers la gauche) est montre dansla Table 8.

La sous-routine est appelee deux fois dans le programme. Une fois a la ligne (101)16 et uneautre fois a la ligne (104)16.

Lorsque la premiere instruction BSA est executee pour appeler la sous-routine SH4, l’unitede controle range l’adresse de retour 102 a l’adresse definie symboliquement par SH4 (c’est adire = (109)16).

L’unite de controle place aussi la valeur SH4+1 (= (10A)16) dans le compteur deprogramme PC pour commencer l’execution de la sous-routine.

La derniere instruction de la sous-routine, a la location (10F )16 (appelee l’instruction deretour de la sous-routine) execute un embranchement inconditionnel indirect vers la location(102)16.

BSA est appelee l’instruction d’appel de la sous-routine.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 30 / 37

Page 30: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Sous-routines

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

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 31 / 37

Page 31: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties

Programmation pour les entrees/sorties

La Table 9(a) montre les instructions necessaires pour entrer un caractere, l’afficher, etensuite le ranger en memoire.

La Table 9(b) montre les instructions necessaires pour afficher un caractere qui estinitialement range en memoire.

Table 9: Programmes pour l’entree/sortie d’un caractere

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 32 / 37

Page 32: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties Manipulation de caracteres

Manipulation de caracteres

Le programme de la Table 10 montre une sous-routine appelee IN2 qui entre deux caracteresde 8 bits chacun, et les assemble en un mot de 16 bits.

Table 10: Sous-routine pour entrer et assembler deux caracteres

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 33 / 37

Page 33: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties Manipulation de caracteres

Le programme de la Table 11 utilise la sous-routine IN2 pour entrer une chaıne de caracteresdu clavier, assembler deux caracteres en un mot, et ranger le tout dans un tampon quidebute a l’adresse (500)16 de la memoire.

Table 11: Programme pour ranger des caracteres d’entree dans un tampon

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 34 / 37

Page 34: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties Interruptions de programme

Interruptions de programme

Le systeme d’interruptions permet au programme de se derouler jusqu’a ce qu’un appareild’entree/sortie leve son drapeau.

Lorsqu’un appareil est mis a 1, l’ordinateur termine l’execution de l’instruction en cours puisse focalise sur l’interruption, en:

1 Rangeant l’adresse de retour a la location 0 de la memoire2 Executer l’instruction a 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 Verifier quel drapeau d’entree/sortie est leve3 S’occuper de l’appareil dont le drapeau est leve4 Restaurer le contenu des registres du processeur5 Reactiver le systeme d’interruption6 Retourner au programme interrompu

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 35 / 37

Page 35: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties Interruptions de programme

Un exemple de programme qui s’occupe d’une interruption est montre dans la Table 12.

La location 0 est reservee pour l’adresse de retour.

La location 1 contient un embranchement inconditionnel direct vers la routine de serviceSRV.

Le programme principal debute a la location (100)16 de la memoire.

La routine de service debute a la location (200)16 de la memoire.

Le programme principal contient une instruction “ION” au tout debut, pour activer lesysteme d’interruptions.

Le circuit d’interruption est eteint dans le materiel par la micro-operation RT2 : IEN ← 0juste avant l’execution de la routine de service des interruptions.

Il est donc important de reactiver le systeme d’interruptions juste avant la fin de la routinede service. Ceci se fait dans le logiciel en incluant l’instruction “ION”.

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 36 / 37

Page 36: Chapitre VI Programmation de l’Ordinateur de Basemgarz042/CEG2536/notes/chapitre6.pdfLe langage machine Dans ce chapitre, nous allons utiliser les mˆemes 25 instructions que celles

Programmation pour les entrees/sorties Interruptions de programme

Table 12: Programme pour s’occuper d’une interruption

Wail Gueaieb (Universite d’Ottawa) CEG2536: Architecture des Ordinateurs I Automne 2007 37 / 37