Académique Documents
Professionnel Documents
Culture Documents
ASR2 - Systeme
Departement informatique
IUT Bordeaux 1
Mars 2013
1/70
Premiere partie
2/70
Contenu
1 3 Le premier ordinateur
Elements
2 Interaction des elements 4 De nos jours
3/70
Structure d’un ordinateur
Un ordinateur comporte un processeur, de la memoire, des
dispositifs d’entree-sortie.
4/70
R^ole des elements
Source : http://en.wikipedia.org/wiki/Transistor_count
9/70
Deuxieme partie
10/70
Contenu
6 Quelques exemples
5 Principes 7 Modele du programmeur
11/70
Principes de base d’un processeur
13/70
Illustration : Architecture ARM, Cortex M3
14/70
le \Modele du programmeur"
Un processeur ctif
16/70
Contenu
17/70
Un processeur ctif
Elements
machine a mots de 16 bits, adresses sur 12 bits
1 accumulateur 16 bits
compteur ordinal 12 bits
jeu de 13 instructions sur 16 bits
arithmetiques : addition et soustraction 16 bits, complement a 2.
chargement et rangement directs et indirects
saut conditionnel et inconditionnel, appel de sous-
programme ...
18/70
Format des instructions
code operande
4 bits 12 bits
---- ------------
19/70
exemple
20/70
Instruction ou donnee ?
21/70
Le jeu d’instructions
22/70
Les classes d’instructions
4 classes :
Transferts
pour charger une valeur dans l’accumulateur
ou placer le contenu de l’accumulateur en memoire (load, store).
Arithmetique
addition et soustraction (add, sub)
Branchements
pour continuer a une adresse donneee (jump, call)
Divers
halt
23/70
Programmes
24/70
Utilisation de mnemoniques
Exemple de programme
0009 5005 6006 3007 C000 0005 0003 0000
25/70
Reservation de mots
Exemple de programme
0009 5005 6006 3007 C000 0005 0003 0000
aux adresses 5, 6, et 7 on trouve les valeurs 5, 3 et 0,
adresse contenu directive operande
5 0005 word 5
6 0003 word 3
7 0000 word 0
26/70
Etiquettes symboliques
load 9 load 9
add 5 add premier
sub 6 sub second
store 7 store resultat
halt 0 halt 0
word 5 p r e m i e r word 5
word 3 s e c o n d word 3
word 0 r e s u l t a t word 0
27/70
Assemblage
28/70
Conventions d’ecriture
29/70
Quatrieme partie
Programmation
30/70
Contenu
Boucles et organigrammes
12 Codage des expressions
et a ectations
Exercices
Rangements, arithmetique, ...
Bilan d’etape
15 Tableaux et pointeurs
Prise en main du simulateur
Adressage indirect
Exercices
Exemple
Bilan d’etape
Exercices
13 Decisions et boucles Bilan d’etape
Saut conditionnels 16 Sous-programmes
et inconditionnels Appel et retour
Utilisation Passage de parametres
Si-alors-sinon Exercices
14 Faire des boucles 17 Conclusion
31/70
Instructions de base
Pour commencer :
firefox ~/Bibliotheque/ASR2-systeme/WebSim16/index.html
Exemple : traduction de l’a ectation \A = B"
load B
store A
halt0
A word 11
B word 22
33/70
Utilisation 1/4
On tape le programme dans l’editeur
et on lance l’assembleur...
34/70
Utilisation 2/4
38/70
Bilan d’etape
Bravo !
de a ectations
39/70
Sauts conditionnels et inconditionnel
40/70
Utilisation
41/70
Organigramme 1/4
L’algorithme
si X<0
alors
j V= X
sinon
j V= X
42/70
Organigramme 2/4
43/70
Organigramme 3/4
L’instruction \V = Acc" est la derniere des deux branches, on peut
la \factoriser" :
44/70
Organigramme 4/4
Si le contenu de l’accumulateur est negatif, l’execution
continue en sequence, il faut alors sauter a la n.
45/70
de l’organigramme au programme
l o a dX
jneg negatif
jmp fin
negatif
loadi 0
sub X
fin
store V
Ca parait simple...
46/70
Commentaires
47/70
Exercices
48/70
Faire des boucles
49/70
Exemple : la somme des entiers de 1 a N
Algorithme
donnee N nombre ,
r e s u l t a t S nombre
v a r i a b l e K nombre
debut
S=O
K=1
t a n t que K <= N
faire
j S=S+K
j K=K+1
fin
50/70
Pseudo-instructions
Algorithme Pseudo-code
S=0
debut K=1
S=O BOUCLE
K=1 s i K > N a l l e r a SUITE
t a n t que K <= N f S=S+K
aire K=K+1
j S=S+K a l l e r a BOUCLE
j K=K+1
fin SUITE
...
51/70
Code assembleur
Le pseudo-codegure en commentaires
loadi 1 #K=K+1
loadi 0 #S=0
store S add K
loadi 1 #K=1 store K
jmp BOUCLE
store K SUITE
BOUCLE # si K>N
halt 0
load N #variables
sub K
j n e g SUITE # aller a suite N word 5
load S #S=S+K
K word 0
add K S word 0
store S
52/70
Exercices sur les boucles
Facile
1 programme qui multiplie deux valeurs (additions successives)
2 programme qui divise deux valeurs (soustractions
successives) et fournit le quotient et le reste.
A la maison
1 programme qui calcule la factorielle d’un nombre.
2 programme qui trouve le plus petit diviseur non trivial d’un
nombre (plus grand que 1).
53/70
Bilan d’etape
Bravo !
55/70
Exemple
s t o r e x 101
56/70
Synthese : Les types d’operandes
l’adresse de base du
tableau 100
la valeur de l’indice K
59/70
Acces a un element de tableau
loadi T # a d r . de T [ 0 ]
add K
store PTR # a d r . de T [ K ]
loadx PTR # a c c = t [ k ]
...
s t o r e x PTR # t [ k ] = a c c
...
K word 3
PTR word 0
T word 11
word 22
..
60/70
Exemple : somme des elements d’un tableau
j S=S+T[K] add S
j K=K+1 store S
61/70
Exemple : somme des elements d’un tableau
l o a d i0
store S
store K
BOUCLE
l o a d i 10 / loadi T
sub K / add K
j z e r oFIN / store PTR
........... / loadx PTR
l o a d i1 n add S
add K n store S
store K
jmp
BOUCLE
FIN
halt 0
62/70
Exercices
Simples
1 Remplissage d’un tableau avec les entiers de 0 a 9
2 Copie d’un tableau dans un autre
3 Maximum des elements d’un
tableau Un peu plus longs...
1 Tri par selection
2 Tri par insertion
63/70
Bilan d’etape
Bravo !
vous ma^trisez maintenant
11 instructions sur 13
et vous savez les employer
pour ecrire des programmes
qui manipulent des tableaux
et des pointeurs.
pour nir, nous allons voir
l’appel et le retour de
sous-programmes.
64/70
Appel et retour
65/70
Exemple de sous-programme
66/70
Passage de parametres
Ecrivez
un sous-programme de multiplication
une fonction factorielle.
un sous-programme de division,
un programme qui teste si un nombre est premier.
un programme qui remplit un tableau avec les 20 premiers
nombres premiers
68/70
Conclusions