assembleur

Pages: 14 (3444 mots) Publié le: 16 décembre 2014
Architectures des ordinateurs
Cours 4

Langage machine : assembleur 8086

Eric Garcia
2002
IUT GTR, Montbéliard

Références
http://lifc.univ-fcomte.fr/~teifreto/ASI-Cours/index.htm
http://icps.u-strasbg.fr/~vivien/Enseignement/Archi-20012002/Cours.pdf
http://asi.insa-rouen.fr/enseignement/siteUV/se/cours.html
http://www-gtr.iutv.univ-paris13.fr/Equipe/viennet/Enseignement/http://www.lifl.fr/~simplot/ens/archi/
http://worldserver.oleane.com/heissler

Plan

Architecture d’un processeur
Processeur 8086
Assembleur
Pile et Procédures
Systèmes d’exploitation et appels systèmes

UAL : Rappel
Unité chargée
Des opérations arithmétiques :
ADD (+), SUB (-), MUL (*), DIV (:), INC (+ 1), DEC (- 1)
Des opérations logiques :
AND, OR, XOR, NOT, CMP
LSL, LSR, ASR(décalages)

Architecture de Von Neuman

Chemin des données

Les composants
Registres
Adresse, Donnée
INST, IP, SP , constantes (0, 1, ...), Registres A, B, C, …
Registres tampons (TampA, TampB)
Registre des drapeaux de l'UAL (Flags)

2 Bus
Signaux de commande
Bus 1 : entrée (RO), sortie (AI, TA, TB)
UAL : M (sélection de Donnée ou TampA), C (choix de
l'opération), FI (mise à jour desFlags)
Bus 2 : sortie (DI I, RI)
Lecture/ Écriture : DI E , DO

Séquencement des actions
Exemple :
Reg A ← Reg A + Reg B

Signaux

Actions :
Transfert (Bus 1) Reg A →Tamp A
Transfert (Bus 1) Reg B → Tamp B
Choix UAL (C= 100, M= 0, Flags)
Transfert (Bus 2) UAL → Reg A

RO10 , TA
RO11 , TB
C 2C1C 0 ,M, FI
RI10

Une micro- instruction = ensemble des actions faisant fonctionnerune fois le chemin de données

µ- instruction

µ- instruction = 5 sous- cycles:
1. Transfert n° 1 par le Bus 1
2. Transfert n° 2 par le Bus 1
3. Opération UAL
4. Transfert résultat par le Bus
2 (+ observation des FLAGS)
5. Accès à la mémoire (READ
/ WRITE)

µ- programmes (1)
1. Faire l’addition de 2 registres et mettre le résultat dans l’un des
deux
ex : IP ← IP + Reg1
10: TampA← IP ; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL;
(signaux: RO1,TA ; RO4,TB ;
C= 100 , M= 0 , FI ;
RI1 )

2. Faire des sauts conditionnels :
Conditions possibles = FLAGS en sortie de l ’UAL (Bus 2)
ex : Si RegA= 0 aller en 30
10: TampA ← RegA ; TampB . ← Reg0 ; UAL . ← TampA+ TampB; on ZF jmp 30 ;

(signaux: RO10,TA ; RO3,TB ;

C= 100 , M= 0 , FI ; )

Il faut faire une opérationpour calculer ZF mais UAL ← TampA n ’en est pas une

µ- programmes (2)
3. Envoyer le contenu d’une case mémoire d’adresse XX dans un
registre : (Hypothèse: l’adresse XX est dans un autre registre)
ex : RegA ← [RegB]
– il faut commencer par mettre RegB dans Adresse et déclencher une
opération de lecture (Un accès à la mémoire (READ / WRITE) prend 2
cycles)
;
;
; READ
10: Adresse ← RegB;
(signaux: AI , TB
;
;
;
; DIE )
11:
;
;
;
; READ
– la valeur est ensuite disponible dans Donnée . Pour l ’envoyer dans un
autre registre, il faut passer par l ’UAL
12:
(signaux:

;
;

;UAL ← Donnée ; RegA ← UAL ;
; C= 001, M= 1 ; RI10 )

Optimisation
Occuper les bus le + possible :
ex : RegA ← [RegB]
10: Adresse ← RegB
11:
12:

;
;
;

;
;
; UAL ← Donnée

;; READ
;
; READ
; RegA ← UAL ;

IP ← IP + Reg1
13: TampA ← IP

; TampB ← Reg1; UAL ← TampA+ TampB; IP ← UAL;

Ici, on peut faire les 2 opérations en même temps
10: Adresse ← RegB ;
;
;
; READ
; TampB ← Reg1 ; UAL ← TampA+ TampB ; IP ← UAL ; READ
11: TampA ← IP
12:
;
; UAL ← Donnée
; RegA ← UAL ;

L’unité de commande
L’unité de commande exécute les opérations suivantes :Lecture du code de l’opération
Lecture des arguments
Traitement
Sauvegarde du résultat
Passage à l’instruction suivante

µ-programme de lecture du code de l’opération (l’opération à
effectuer est en mémoire à l’adresse IP)
- lecture de l ’opération
0: Adresse ←IP ;

;

;

; READ

- on en profite pour passer à la case mémoire suivante
1: TampA ← IP ; TampB ← Reg1 ; UAL ← TampA+...
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • Assembleurs
  • assembleur 6809
  • initiation Assembleur
  • projet en assembleur
  • Assembleur interessant
  • assembleur 64bit
  • Etude d'un assembleur pour 68hc12 en c
  • Projet tapis assembleur

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !