Polycopie V0 29 05 2016
Polycopie V0 29 05 2016
Polycopie V0 29 05 2016
Rédigé par
Belkacem BENADDA
Bilal BELDJILALI
Année 2016
Ce travail est dédié à mes parents, ma chère épouse,
mes frère et sœurs, toute ma famille, sans oublier mes amis,
Belkacem BENADDA
Bilal BELDJILALI
Préface
Préface
pour ne citer que quelques exemples. Des exemples que nous évoquons et que
nous essayerons d’approcher l es principes sur les travaux pratiques abordés.
Bien que les privilèges de la programmation assembleur soient mis en évidence
dans ce manuel, nous voulons également faire ap prendre aux étudiants les
limites de cette dernière et expliquer les raisons pour les quelles la
programmation de haut niveau prime. Les notions abordées sont traitées
graduellement avec des degrés de difficultés croissants. Afin de pouvoir
programmer convenablement, l es étudiants sont également appelés à lire,
anal yser et comprendre les sc hématiques proposés avec les différents énoncés.
Les outils qui sont utilisés se présentent sous la forme d’un système
embarqué à base d’un CPU Intel 8086, M icro Assembleur MASM comme
assembleur et débugger. Nous ouvrons une parenthèse sur l’origine de cette
appellation qui est née au temps des premiers ordinateurs volumineux ayant
comme casse-tête de dysfonctionnement des petits insectes (bugs en anglais)
qui perturbai ent les connexions électrique s, la nature des dysfonctionnements
des s ystèmes actuels, au niveau binaire, cause un casse-tête bien plus sérieux,
d’où l’appellation debugger.
7
Préface
8
Chapitre 1
Présentation
générale du système
Présentation générale du système
I. Introduction
Le 8086 à aujourd’hui presque 40 ans d’ existence, commercialisé
officiellement le 8 juin 1978, par l’entreprise Intel au-alentour de 40 000
Dinars Algériens de l’époque [1 -5]. Il est toujours commercialisé de nos jours
et ne coute pas plus de 5 00 Dinars Algérien [6]. Avec 133 instructions le 8086
d’Intel implémente une architecture CISC (Complexe Instruction Set
Computer) un espace adres sable d’un méga octet et des manipulations de
données codées sur 16 bits [ 2-4, 7, 8]. Ce processeur a défini l’architecture de
base utilisée jusqu’à nos jours dans les processeurs modernes de la firme I ntel
[8]. En effet, les processeur s Intel peuvent fonctionner en mode dit réel en
activant un environnement de programmation identique à celui du 8086 [8].
Dans ce chapitre nous allons décrire le système de développement que nous
avons utilisé pour assurer les travaux p ratiques d édiés aux s ystèmes embarqués,
un s ystème dont le cœur est un processeur Intel 8086.
11
Chapitre 1
12
Présentation générale du système
13
Chapitre 1
00000H
64 ko RAM Statique
0FFFFH
10000H
Espace extension
EFFFFH
14
Présentation générale du système
Plage d’adresses en
Désignation du port
notation Description
d’entrée / Sotie
hexadécimale
Ecran LCD
00H : Registre instruction.
02H : Registre d’état.
00H Ecran LCD et 04H : Registre de données.
07H Clavier
Clavier
01H : Registre en lecture.
01H : Drapeaux (flags).
8251 USART
8251 USART 08H : Registre données.
communication 0AH : Instructions , état.
08H série
8253 Compteur et Timer
0FH et 09H : Registre Timer0.
8253 compteurs et 0BH : Registre Timer1.
Timer 0DH : Registre Timer2.
0FH : Registre de control.
20H Connecteur
Extensions
2FH Utilisateur
30H
Non Définies Adresses libres
FFH
15
Chapitre 1
Ces registres 16 bits sont combinés avec un offset pour former les
adresses physiques sur 20bits (bus d’adresse du 8086) [3-5]. Chaque case
mémoire dans le programme peut être identifié e sous la forme
Segment : Offset . Les registres segment s vont identifier une zone de 64 Ko,
l’offset est la position relative par rapport à la position du segment [7,8].
16
Présentation générale du système
usage général,
exigé pour les opérations de multiplication et de division,
ne peut pas être utilisé pour l’adressage.
BX : Base (BH:BL),
usage général,
peut être utilisé pour l’adressage, si son contenu est un offset, il est
relatif au segment DS.
usage général,
utilisé par certaines instructions comme compteur,
ne peut pas être utilisé pour l’adressage.
17
Chapitre 1
DX : Data (DH:DL),
usage général,
exigé pour les opérations de multiplication et de division comme
extension au registre AX,
ne peut pas être utilisé pour l’adressage.
SI : Source Index,
DI : Destination Index,
18
Présentation générale du système
IV.1. Questions
19
Chapitre 1
20
Présentation générale du système
V.1. Questions
21
Chapitre 1
Sur la figure-I-5 trois zones sont visibles. Une zone des adresses segment :
offset, une zone qui contient des adresses en représentation hexadécimal e
et une dernière zone montrant le contenu des cases mémoire s en
représentation ASC II. Il s’agit du segment des données.
Sur la figure-I-6 pour la commande U trois zones sont visibles. Une zone
des adresses segment : offset, une zone qui contient le code binaire des
instructions en représentation hexadécimale compréhensible par le CPU et
une dernière zone montrant le s mnémoniques lisibles par un humain. La
partie du bas montre le résultat d’exécution du premier programme (résultat
dans AX), il faut remarquer l’état des flags .
L’adressage immédiat fait référence aux données contenu es dans les
instructions.
22
Présentation générale du système
VI. Conclusion
La connaissance de l’architecture interne du CPU est primordiale pour sa
programmation. Il est également démontré que l’écriture des instructions
directement sur la mémoire centrale de la machine en binaire ou en mnémonique
est une tâche ardue. Il est égal ement évident que la résolution d’un algorithme
ou traitement mathématique en langage machine s’avère relativement délicat .
Les solutions proposées sur les figures sont une simple illustration
d’échantillons d ’une multitude de possibilités offertes aux étu diants. Des
solutions t ypes qui aideront sans aucun doute à proposer d’autres solutions.
23
Chapitre 2
Manipulations avec
l’interface parallèle
Manipulations avec l’interface parallèle
I. Introduction
L’enjeu primordial de la programmation assembleur est de pouvoi r
manipuler directement des périphériques en assimilant la façon avec laquelle
ils opèrent. Les périphériques les plus simples sont ceux qui échangent avec le
processeur des données en parallèles. En effet ces derniers opèrent à l’image
d’une simple case mémoire. Cependant, écrire des programmes avancés en
assembleur requiert certaines règles imposé es par les outils de programmation
et de développement. Dans ce chapitre nous allons présenter les structures des
programmes assembleurs. Des structures qui seront exploitées pour la
manipulation des interfaces parallèles.
Il devient alors évident que les instructions codée s en binaire sont sous la
forme de la figure-II-1.
27
Chapitre 2
28
Manipulations avec l’interface parallèle
29
Chapitre 2
;***************************************** **********************
; TP N°-- du -- /--/----
; Titres du Travail Pratique, Exercice N °--
; Matière systemes embarques
;***************************************** **********************
; Début de déf init ion du segment dit BK
BK SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
;
ORG 1000H
;
; Instructions
;
BK ENDS ; Fin du segment BK
END
figure-II-4 : Structure d’un programme assembleur utilisé.
30
Manipulations avec l’interface parallèle
31
Chapitre 2
Adresse :
1FH Confi guration,
19H Port A (PA0: PA7), 1BH
portB (PB0:PB7), 1DH
PortC (PC0:PC7)
32
Manipulations avec l’interface parallèle
Nombre
Mnémonique Signification
de cycles
Ecrire le contenu d u registre AL vers
OUT Adresse, AL 14
l'interface spécifiée par l’Adresse.
Lire dans le registre AL le contenu de
IN AL, Adresse 14
l'interface spécifiée par l’Adresse.
Copier la Valeur dans le Registre
MOV Registre, Valeur 04
(adressage immédiat)
MOV Registre1, Registre2 Copier le Registre2 dans le Registre 1 03
ROL Registre 02
NOP No Opération 03
Effectue (Registre – Valeur), le
CMP Registre, Valeur résultat est perdu et actualise les 04
flags : AF CF OF PF SF ZF
XOR registre1, registre2 XOR : registre1= registre1 registre2 04
DEC Registre Registre = Registre -1 03
JNZ étiquette 04
IP= étiquette si ZF = 0
JNE étiquette 16 cas du jump
J LE étiquette 04
IP = étiquette si CF=1 ou ZF =1
JBE étiquette 16 cas du jump
JMP étiquette IP = étiquette. 11
Une directive qui définit un octet dans
la mémoire est l’initialise avec valeur.
{id_Adr} DB valeur /
L’adresse de cette case est accessible
via id_Adr.
Déclaration de constante , une directive
Identificateur EQU valeur /
pour l’assembleur.
33
Chapitre 2
34
Manipulations avec l’interface parallèle
Pour finir les PortA et PortB sont utilisé s en sortie, ce qui imp ose leurs
configuration en sortie en écrivant la valeur 80H sur le registre de commande
du 8255A-CS2, une valeur calculée à partir de la figure-II-6.
35
Chapitre 2
V.2. Solutions
;***************************************************************
; TP N°02 du 22 / 11/2015
; Aff ichage 7 segments , Exercice N°01
; Matière systemes embarques
;***************************************************************
; Début de déf init ion du segment dit BK
BK SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
;
ORG 1000H
; Configurat ion Port A, PortB et PortC Mode 0 En sortie
MO V AL, 80H
OUT 1FH, AL
; Allumer la LED Ver te
MO V AL, 00000010B
OUT 1BH, AL
; Afficher 4
MO V AL, 10011001B
OUT 19H, AL
INT 3
BK ENDS ; Fin du segment BK
END
figure-II-9 : Programme type pour allumer la LED verte
et afficher 4 sur le 7 segments
36
Manipulations avec l’interface parallèle
37
Chapitre 2
;***************************************************************
; TP N°02 du 22 / 11/2015
; Aff ichage 7 segments , Exercice N°02
; Matière systemes embarques
;***************************************************************
; Début de déf init ion du segment dit BEN
BEN SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
ORG 1000H
; Configurat ion Port A, PortB et PortC Mode 0 En sortie
MO V AL, 80H
OUT Conf ig , AL
; Allumer l es LEDs r ouges
MO V AL, 00000010B
OUT PortB, AL
; Afficher 9
MO V AL, 10100100B
OUT PortA, AL
INT 3
BEN ENDS ; Fin du segment B EN
END
figure-II-11 : Programme type pour allumer l es LEDsrouges
et afficher 9 sur le 7 segments.
3. Compteur et horloge.
La solution est donnée par la figure-II-12. Les différentes combinaisons
à utiliser avec l’afficheur sept segments sont énumérées à la fin du
programme. L’adresse de la première combinaison (le zéro) est signalée
par l’étiquette chiffre utilisée comme base permettant l’accès aux
suivantes, l’adres se de la combinaison suivante à afficher est calculée en
utilisant le registre BX pour mémoriser le déplacement par rapport à
l’adresse de base chiffre. Le processeur opère avec une vitesse très
38
Manipulations avec l’interface parallèle
;***************************************************************
; TP N°02 du 22 / 11/2015
; Aff ichage 7 segments , Exercice N°03
; Matière systemes embarques
;***************************************************************
CO MPT SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
Conf ig EQU 1FH
PortA EQU 19H
PortB EQU 1BH
ORG 1000H
; Configurat ion Port A, PortB et PortC Mode 0 En sortie
MO V AL, 80H
OUT Conf ig, AL
; Allumer la première LED
MO V AH, 10001000B
Debut : ROL AH, 1
MO V AL, AH
OUT PortB, AL
; Afficher 2
XOR BX, BX
Comp: MO V AL, [Chif f re+BX]
OUT PortA, AL
INC BX
XOR CX, CX
Tempo: NOP
NOP
NOP
DEC CX
JNZ Tempo
CMP BX, 09H
JLE Comp
JMP Debut
INT 3
39
Chapitre 2
Chiff re DB 11000000B
DB 11111001B
DB 10100100B
DB 10110000B
DB 10011001B
DB 10010010B
DB 10000010B
DB 11111000B
DB 10000000B
DB 10010000B
40
Manipulations avec l’interface parallèle
41
Chapitre 2
Nombre
Mnémonique Signification
de cycles
C’est une instruction de boucle utilisant
04
CX comme compteur décrémenté à
LOOP offset 08 dernière
chaque exécution de Loop, si ZF=1 alors
itération
IP= offset.
Le registres IP est empilé dans la pile,
CALL offset 19
IP = offset
RET IP est dépilé de la pile 16
42
Manipulations avec l’interface parallèle
;***************************************************************
; TP N°03 du 22 / 11/2015
; Aff ichage Matrice de LEDs , Exercice N°01
; Matière systemes embarques
;***************************************************************
; Début de déf init ion du segment dit BK
BK SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
Conf ig EQU 1EH
PortA EQU 18H
PortB EQU 1AH
PortC EQU 1CH
ORG 1000H
; Configurat ion Port A, PortB et PortC Mode 0 En sortie
MO V AL, 80H
OUT Conf ig, AL
; Activer toutes les colonnes
MO V AL, 111111111B
OUT PortC, AL
; Activer toutes les lignes vertes
MO V AL, 00000000B
OUT PortA, AL
; Désact iver toutes les lignes rouges
MO V AL, FFH
OUT PortB, AL
INT 3
BK ENDS ; Fin du segment BK
END
figure-II-14 : Programme type pour allumer l e panneau en vert.
43
Chapitre 2
;***************************************************************
; TP N°03 du 22 / 11/2015
; Aff ichage Matrice de LEDs , Exercice N°02
; Matière systemes embarques
;***************************************************************
; Début de déf init ion du segment dit BK
BK SEG MENT
ASSUME CS:BK,DS:BK, SS:BK
Conf ig EQU 1EH
PortA EQU 18H
PortB EQU 1AH
PortC EQU 1CH
ORG 1000H
; Configurat ion Port A, PortB et PortC Mode 0 En sortie
MO V AL, 80H
OUT Conf ig, AL
; Activer toutes les colonnes
MO V AL, 111111111B
OUT PortC, AL
; Activer la deuxièm e ligne verte
MO V AL, 11111101B
OUT PortA, AL
; Activer la cinquième ligne rouge
MO V AL, 11101111B
OUT PortB, AL
INT 3
BK ENDS ; Fin du segment BK
END
figure-II-15 : Programme type pour allumer la deuxième ligne en vert et la
cinquième ligne en rouge.
44
Manipulations avec l’interface parallèle
ORG 1000H
45
Chapitre 2
INT 3
TEMPO: MO V CX,0FFFFH
T1: NOP
NOP
NOP
NOP
LOOP T1
RET
BK ENDS ; Fin du segment BK
END
figure-II-17 : Programme type pour allumer la deuxième ligne en vert et la
cinquième colonne en rouge.
46
Manipulations avec l’interface parallèle
MO V AL, AH
OUT PortC, AL
CALL TEMPO
INC BX
ROL AH, 1
JNC ET2
JMP Debut
INT 3
47
Chapitre 2
A: DB 11111111B
DB 11000000B
DB 10110111B
DB 01110111B
DB 01110111B
DB 10110111B
DB 11000000B
DB 11111111B
BK ENDS ; Fin du segment BK
END
figure-II-18 : Programme type pour afficher la lettre A .
48
Manipulations avec l’interface parallèle
L’écran LCD est un module standard de deux lignes seize caractères par ligne,
qui répond aux instructions du tableau suivant :
49
Chapitre 2
50
Manipulations avec l’interface parallèle
ORG 1000H
XOR AX,AX
MO V SS,AX
MO V SP,STACK
51
Chapitre 2
; instructions LCD
ALLCLR: MO VAH,01H ; Procédure utilisée pour eff acer l’écran
JMP LNXX
;
SHIFT: MO V AH,00011100B
JMP LNXX
;
LN21: MO V AH,0C0H
;
LNXX: CALL BUSY
MO V AL,AH
OUT LCDC,AL
RET
BUSY: IN AL,LCDC_S
AND AL,10000000B
JNZ BUSY
RET
;
; 1 char. LCD OUT
; AH = out data
CHAROUT:
CALL BUSY
;
MO V AL,AH
OUT LCDD,AL
RET
;
Clavier: MO VAH,BYTE PTR CS:[SI]
CMP AH,00H
JE STRING1
; out
CALL BUSY
CALL CHAROUT
INC SI
JMP STRING
STRING1:
RET
52
Manipulations avec l’interface parallèle
;
TIMER: MO V CX,2
TIMER2: PUSH CX
MO V CX,0
TIMER1: NOP
NOP
NOP
NOP
LOOP TIMER1
POP CX
LOOP TIMER2
RET
;
CODE ENDS
END
X. Conclusion
Les programmes présentés paraissent simple, sauf que leur écriture
requière une anal yse détaillée du f onctionnement des circuits mis en œuvre. En
effet, dans certaines configurations un 1 utilisé dans le programme permet
d’activer l’interface alors que dans d’autres c’est le 0 qui le fait. Lors des
différentes séances des travaux pratiques souvent les étudiants ont consommé
du temps pour trouver la bonne combinaison ont opéré par tâtonnement, une
approche qui s’adapte à trouver des solutions dans le cas de quelques LEDs.
Cependant, avec un nombre important il est primordiale d’effectuer une anal yse
détaillée du schématique, déclarer convenablement les données dans la
mémoire, une partie du travail qui prend presque la moitié du temps de la
séance, enfin écrire les instructions dans ordre correcte.
53
Conclusion
Conclusion
Je peux lui répondre en disant que contrôler des LEDs revient à gérer le flux
routier, à informer des gens, beaucoup plus transmettre de l’information , et
pourquoi pas gérer un allumage d’ambiance lors d’un moment de romance . J’ai
apprit par la suite que l’étudiant est un fan de la nouvelle philosophie du
développement en système embarqué ADUINO. Des systèmes destinés au
protot ypage rapide des produits finaux, et créées en premier lieu pour des artistes.
J’attire l’attention sur le point que ces systèmes sont dotés d’un Firmware qui
facilite leur utilisation et leur confère le succès enregistré. Toutefois, pour certaines
applications, particulièrement celles dédiées aux télécommunications, services
nouveaux et protocoles actualisés, il faut toujours agir s ur le Firmware, une tache
qui ne peut être réalisée que par une personne qui maitrise la programmation bas
niveau.
57
Bibliographie
Bibliographie
[1] John Sheesley, “Intel's 8086 passes the big 3 -0”, TechRepublic, June 16 t h ,
2008.
[2] Stephen P. Morse, Bruce W Ravenel, Stanley Mazor, William B. Pohlman,
“Intel Microprocessors: 8008 to 8086 ”, Computer Structures, pages 615 -646,
Siewiorek/Bell/Newell, 1982.
[3] Emmanuel Viennet, Architecture des Ordinateur, GTR 1999 -2000, IUT de
Villetaneuse.
[4] A. Oumnad, “Microprocesseurs de la famille 8086”, Ecole des Ingénieurs
Mohamadia, 2007.
[5] Intel, “The 8086 famill y user’s manuel”, Intel Corporati on 1979.
[6] http://www.jameco.com/1/1/1111 -8086-2-microprocessor -16-bit-32-i-o-8mhz-
dip-40.html
[7] Cyril CAUCHOIS, "L’Assembleur Intel", Support de cours , Institut
Universitaire de Technologie d’Amiens , 2000.
[8] Intel, "Intel 64 an IA -32 architectures software developer’s manual”, Intel
Corporation 2015.
[9] MDA-WIN8086 Manual, An Integrated Development Environment kit, User’s
Manual, Midas Engineering Co., ltd.
[10] R. P. JAIN, M. M. S. ANAND, “Digital Electronics practice using integrated
circuits”, McGraw -Hill, 1984.
61
Annexe
Annexe
Nombre
Mnémonique Signification
de cycles
Ecrire le contenu d u registre AL vers
OUT Adresse, AL 14
l'interface spécifiée par l’Adresse.
Lire dans le registre AL le contenu de
IN AL, Adresse 14
l'interface spécifiée par l’Adresse.
Copier la Valeur dans le Registre
MOV Registre, V aleur 04
(adressage immédiat)
MOV Registre1, Registre2 Copier le Registre2 dans le Registre 1 03
ROL Registre 02
NOP No Opération 03
Effectue (Registre – Valeur), le
CMP Registre, Valeur résultat est perdu et actualise les 04
flags : AF CF OF PF SF ZF
XOR registre1, registre2 XOR : registre1= registre1 registre2 04
DEC Registre Registre = Registre -1 03
JNZ étiquette 04
IP= étiquette si ZF = 0
JNE étiquette 16 cas du jump
J LE étiquette 04
IP = étiquette si CF=1 ou ZF =1
JBE étiquette 16 cas du jump
JMP étiquette IP = étiquette. 11
Une directive qui définit un octet dans
la mémoire est l’initialise avec valeur.
{id_Adr} DB valeur /
L’adresse de cette case est accessible
via id_Adr.
Déclaration de constante , une directive
Identificateur EQU valeur /
pour l’assembleur.
04
C’est une instruction de boucle utilisant
LOOP offset 08 dernière
CX comme compteur décrémenté à
itération
65
Annexe
chaque exécution de Loop, si ZF=1 alors
IP= offset.
Le registres IP est empilé dans la pile,
CALL offset 19
IP = offset
RET IP est dépilé de la pile 16
66
Table des matières
Préface ............................................................................................................ 5
Chapitre 1 Présentation générale du système ....................................................... 9
I. Introduction ....................................................................................................................................... 11
II. Description générale de la carte de dével oppem ent .......................................................... 11
III. Les Registres du 8086 : .............................................................................................................. 16
III.1. Les registres segments..................................................................................................................... 16
III.2. Les registres à usage général ........................................................................................................... 17
III.3. Les registres d’adressage offset ...................................................................................................... 18
IV. Travail Pratique 01 Initiation (Durée une séance de 3 heures) .................................. 19
IV.1. Questions......................................................................................................................................... 19
IV.2. Travail demandé .............................................................................................................................. 19
V. Sol ution Travail Pratique 01 Initiation .................................................................................. 21
V.1. Questions.......................................................................................................................................... 21
V.2. Travail demandé ........................................................................................................................ 21
VI. Conclusion ....................................................................................................................................... 23
Chapitre 2 Manipulations avec l’interface parallèle ........................................... 25
I. Introduction ....................................................................................................................................... 27
II. Form at des instructions et programm es ................................................................................ 27
II.1 . Les instructions ......................................................................................................................... 27
II.2 . Le format des pro grammes rédigés en assembleur ...................................................... 29
III. Présentation de l’ interface parallèle .................................................................................... 30
IV. Travail Pratique 02 (Durée 6 heures) Manipulations sur l’afficheur7 segm ents
et LEDs ..................................................................................................................................................... 32
IV.1. Description du dispositif :................................................................................................................ 32
IV.2. Travail demandé: ............................................................................................................................. 34
V. Sol ution Travail Pratique 02 : Manipul ations sur l’afficheur7 segm ents et LEDs
..................................................................................................................................................................... 35
V.1. Analyse du problème........................................................................................................................ 35
V.2. Solutions ........................................................................................................................................... 36
VI. Travail Pratique N°3 (durée 6 heures) Panneau d’affichage LED ............................ 41
VI.1. Description du dispositif.................................................................................................................. 41
VI.2. Travail demandé .............................................................................................................................. 42
VII. Sol ution Travail Pratique N°3 Panneau d’affichage LED .......................................... 43
Table des matières
VIII. Travail Pratique N°4 (durée 3 heures) Manipulation avec le clavie r ................... 49
VIII.1. Description du dispositif................................................................................................................ 49
VIII.2. Travail demandé ............................................................................................................................ 50
IX. Sol ution type Travail Pratique N°4 Clavier et LCD ......................................................... 51
X. Conclusion ......................................................................................................................................... 53
Conclusion ..................................................................................................... 55
Bibliographie ................................................................................................. 59
Annexe .......................................................................................................... 63