You are on page 1of 21

Chapitre 3

Arithmétique des ordinateurs
Jean Privat
Université du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleur
Automne 2013
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 1 / 21
Plan
1
Arithmétique
2
Instructions Pep/8
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 2 / 21
Plan
1
Arithmétique
2
Instructions Pep/8
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 3 / 21
Arithmétique
Définition
Science des nombres (αριθμός = nombre)
Opérations traditionnelles
Addition et soustraction
Multiplication et division
Exercices
1264 + 756 = ?
2567 - 666 = ?
345 - 1264 = ?
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 4 / 21
Arithmétique des ordinateurs
Comme avec l’école primaire
On travaille en binaire et en hexadécimal
Exercices
1001110011
2
+ 1010
2
= ?
95C
16
+ E1
16
= ?
Différence : pas de soustraction
Gestion différente des signes :
Arithmétique en complément
La soustraction est un cas particulier de l’addition
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 5 / 21
Arithmétique en complément
Analogie : Compteur de voiture
Décrémenter un compteur de voiture ?
00003
00002
00001
00000
99999
99998
99997
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 6 / 21
Arithmétique en complément
Le complément d’un nombre
Le nombre de l’autre coté du 0
Et les négatifs alors
Découpage (arbitraire) de l’espace
00000 à 49999 : positifs
50000 à 99999 : négatifs
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 7 / 21
Débordement
Nombre fini de chiffres
Le domaine des nombres est fini
Débordement =
Le résultat d’une opération est hors-domaine
Exemple 49999 + 2
Débordement du complément
Un nombre est complément de lui-même
Un nombre n’a pas de complément
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 8 / 21
Arithmétique en complément
en binaire
8 bits
00000000 à 01111111 : nombres positifs
10000000 à 11111111 : nombres négatifs
16 bits
0000000000000000 à 0111111111111111 : positifs
1000000000000000 à 1111111111111111 : négatifs
Détermination du signe
Le bit de poids fort permet connaître le signe
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 9 / 21
Calcul du complément
en binaire
Méthode 1
compl(x) = 2
8
−x
Méthode 2
Inverser les 0 et les 1
Ajouter 1 au résultat
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 10 / 21
Arithmétique en complément
en hexadécimal
16 bits
max (32767) : 7FFF
min (-32768) : 8000
Détermination du signe
Premier chiffre : 0 à 7 →≥ 0 ; 8 à F →< 0
Calcul du complément
Soustraire chaque chiffre de F (15
10
)
Ajouter 1 au résultat
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 11 / 21
Plan
1
Arithmétique
2
Instructions Pep/8
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 12 / 21
Addition
En Pep/8 : Instruction ADDr
Opérande 1 en registre (A ou X)
Opérande 2 en mémoire (ou dans l’instruction)
Résultat rangé dans le registre (opérande 1 écrasée)
Exemple
LDA 42 , i ; Range 42 dans A
ADDA 999 , i ; Aj out e 999 dans A
STA l a_bas , d ; Range A l a bas
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 13 / 21
Résultats intermédiaires
Combiner plusieurs étapes de calcul
On accumule les résultats dans l’accumulateur
Parfois on utilise des mots mémoire supplémentaires
Exemple : t = x + y + z
LDA x , d ; Range x dans A
ADDA y , d ; Aj out e y dans A
ADDA z , d ; Aj out e z dans A
STA t , d ; Range A dans t
Exercice
Calculer x = a + b + c et y = a + b + d
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 14 / 21
Négation
En Pep/8 : Instruction NEGr
Opérande en registre (A ou X)
Résultat rangé dans le registre (opérande écrasée)
Exemple
LDA 42 , i ; Range 42 dans A
NEGA ; A = −A
STA l a_bas , d ; Range A l a bas
Exercices
Calculer x = a-b
Calculer y = (a+b)-(c+d)
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 15 / 21
Soustraction
En Pep/8 : Instruction SUBr
Opérande 1 en registre (A ou X)
Opérande 2 en mémoire (ou dans l’instruction)
Résultat rangé dans le registre (opérande 1 écrasée)
Exemple
LDA 42 , i ; Range 42 dans A
SUBA 999 , i ; S o u s t r a i t 999 dans A
STA l a_bas , d ; Range A l a bas
Exercice
Calculer (a+b)-(c+d)
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 16 / 21
Code de condition
Bits de status = info sur l’opération
N : le résultat est strictement négatif
Z : le résultat est nul (zéro)
V : il y a eu un débordement (overflow)
C : le bit de retenue (carry)
Attention
Chaque instruction peut affecter N, Z, V et C à sa
façon (voir la documentation)
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 17 / 21
Détection de débordement
Débordement ssi l’un des cas suivant
Positif + Positif → Négatif
Négatif + Négatif → Positif
Exercice
Démontrer que Positif + Négatif est toujours sûr
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 18 / 21
Limites
Arithmétique flottante
Bien plus compliqué (voir plus tard)
Pep/8
Pas de multiplication ou de division
→ il faudra les implémenter nous-même
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 19 / 21
La semaine prochaine
Programmer en assembleur Pep/8
Directives
Instructions
Symboles
Adressages
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 20 / 21
Bibliographie
Notes de cours
Chapitre 4 : Introduction à l’arithmétique sur
ordinateur
Livre
Chapitre 4 et section 7.4
Programmes
03-sommes.pep
03-soustractions.pep
Jean Privat (UQAM) 03 — Arithmétique INF2170 — Automne 2013 21 / 21