[Tutoriel] Initiation à l'assembleur (débutant) part 2
Page 1 sur 1
[Tutoriel] Initiation à l'assembleur (débutant) part 2
(chapitre 1) https://www.gamopat-forum.com/t78096-tutoriel-initiation-a-l-assembleur-debutant
Un peu plus sur les nombres binaires
Convertir du binaire vers décimal
Avant d’aller plus loin nous allons apprendre à nous familiariser avec les nombres binaires
Il est possible de convertir très rapidement un nombre binaire en décimale. Pour cela, nous allons mettre en place un tableau pour réaliser cette conversion. Plus tard, avec de la pratique, il pourra facilement se faire de tête. Prenons pour cet exemple des nombres codés sur 8 bits :
Sur la première ligne en partant de la droite inscrivez le nombre décimal 1. Puis sur la case à sa droite son double (2), et ainsi de suite. Sur la ligne suivante inscrivez votre chiffre binaire :
Pour convertir ce chiffre binaire, additionnez les valeurs décimales qui possède sous elle le nombre binaire 1 : 128+64+8+2 Le résultat est 202
La valeur binaire 11001010 vaut 202 en décimal.
Convertir du décimal vers binaire
Prenons le nombre 12 en décimal. Pour convertir un décimal en binaire il faut diviser se nombre par 2. Si le résultat de la division est un entier (n’est pas un chiffre à virgule) on note 0, dans le cas contraire on note 1 et on divise la partie entière du résultat jusqu’à la division finale 1/2 :
La valeur 12 en décimal vaut 1100 en binaire
Particularités des nombres binaires
Regardons rapide cette table de conversion binaire vers décimale :
Nous pouvons constater que les nombres pairs finissent toujours par un 0 en binaire.
Autre particularité, lorsqu’on multiplie un nombre binaire par 2 on a une similitude avec une multiplication par 10 en décimal.
En décimal : 24x10 = 240
En binaire : 101 x 10 = 1010
On a juste à ajouter un 0 après l’unité
Les logiques des portes NOT, AND, OR et XOR
Nous avons vu dans le chapitre précédant qu’il existait des combinaisons de transistors qui permettaient d’obtenir de tables logiques de base. Celles-ci permettent de réaliser n’importe quelles autres tables logiques. Il s’agit des portes NOT, AND, OR et XOR.
Rappel des tables :
La table NOT
La table AND
La table OR
La table XOR
Note : La partie du document qui va suivre est destinée à ceux qui désirent se lancer dans la programmation assembleur. Pour les autres vous pouvez passer directement au chapitre microprocesseur.
Souvenez vous de l’analogie entre notre histoire de lampe et d‘interrupteurs dans le chapitre 1. Ici les entrées E des tables sont des interrupteurs et S la lampe.
La porte NOT à un comportement « taquin » : Lorsque que mon interrupteur envoie du courant la lampe s’éteint et inversement. On peut dire qu’elle fait le contraire de ce que l’on veut.
La porte AND, elle demande que les deux interrupteurs soient allumés pour que la lampe s’allume.
La porte OR demande qu’au moins un interrupteur soit allumé pour que la lampe s’allume.
En fin la porte XOR demande qu’il y ait qu’un seul interrupteur d’allumer pour que la lampe s’allume.
En combinant ces portes on peut réaliser n’importe quelle table de vérité, mais encore plus grandiose c’est avec des millions voir des milliards de combinaisons qu’on fabrique un microprocesseur.
Un peu plus sur les nombres binaires
Convertir du binaire vers décimal
Avant d’aller plus loin nous allons apprendre à nous familiariser avec les nombres binaires
Il est possible de convertir très rapidement un nombre binaire en décimale. Pour cela, nous allons mettre en place un tableau pour réaliser cette conversion. Plus tard, avec de la pratique, il pourra facilement se faire de tête. Prenons pour cet exemple des nombres codés sur 8 bits :
Sur la première ligne en partant de la droite inscrivez le nombre décimal 1. Puis sur la case à sa droite son double (2), et ainsi de suite. Sur la ligne suivante inscrivez votre chiffre binaire :
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
Pour convertir ce chiffre binaire, additionnez les valeurs décimales qui possède sous elle le nombre binaire 1 : 128+64+8+2 Le résultat est 202
La valeur binaire 11001010 vaut 202 en décimal.
Convertir du décimal vers binaire
Prenons le nombre 12 en décimal. Pour convertir un décimal en binaire il faut diviser se nombre par 2. Si le résultat de la division est un entier (n’est pas un chiffre à virgule) on note 0, dans le cas contraire on note 1 et on divise la partie entière du résultat jusqu’à la division finale 1/2 :
12 : 2 = 6 le résultat est un entier donc on note 0
6 : 2 = 3 le résultat est un entier donc on note 0
3 : 2 = 1,5 le résultat n’est un entier donc on note 1
1 : 2 = 0,5 le résultat n’est un donc on note 1
La valeur 12 en décimal vaut 1100 en binaire
Particularités des nombres binaires
Regardons rapide cette table de conversion binaire vers décimale :
Base de 2 | Base de 10 |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
Nous pouvons constater que les nombres pairs finissent toujours par un 0 en binaire.
Autre particularité, lorsqu’on multiplie un nombre binaire par 2 on a une similitude avec une multiplication par 10 en décimal.
En décimal : 24x10 = 240
En binaire : 101 x 10 = 1010
On a juste à ajouter un 0 après l’unité
Les logiques des portes NOT, AND, OR et XOR
Nous avons vu dans le chapitre précédant qu’il existait des combinaisons de transistors qui permettaient d’obtenir de tables logiques de base. Celles-ci permettent de réaliser n’importe quelles autres tables logiques. Il s’agit des portes NOT, AND, OR et XOR.
Rappel des tables :
La table NOT
E | S |
0 | 1 |
1 | 0 |
E1 | E2 | S |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
E1 | E2 | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
E1 | E2 | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Note : La partie du document qui va suivre est destinée à ceux qui désirent se lancer dans la programmation assembleur. Pour les autres vous pouvez passer directement au chapitre microprocesseur.
Souvenez vous de l’analogie entre notre histoire de lampe et d‘interrupteurs dans le chapitre 1. Ici les entrées E des tables sont des interrupteurs et S la lampe.
La porte NOT à un comportement « taquin » : Lorsque que mon interrupteur envoie du courant la lampe s’éteint et inversement. On peut dire qu’elle fait le contraire de ce que l’on veut.
La porte AND, elle demande que les deux interrupteurs soient allumés pour que la lampe s’allume.
La porte OR demande qu’au moins un interrupteur soit allumé pour que la lampe s’allume.
En fin la porte XOR demande qu’il y ait qu’un seul interrupteur d’allumer pour que la lampe s’allume.
En combinant ces portes on peut réaliser n’importe quelle table de vérité, mais encore plus grandiose c’est avec des millions voir des milliards de combinaisons qu’on fabrique un microprocesseur.
Dernière édition par beddy le Mar 10 Mar 2015 - 10:36, édité 1 fois
Re: [Tutoriel] Initiation à l'assembleur (débutant) part 2
Concrètement comment utilisons nous ces portes ?
Imaginons que je désire être averti si l’une les portes ma maison (celle de l’entrée et la celle de mon jardin) est ouverte par d’un signal lumineux. Dans ce cas j’installerai des capteurs sur ses deux portes reliés à une porte logique de type OR.
Si je veux savoir si les deux portes sont ouvertes en même temps, dans ce cas j’utiliserai une porte logique AND.
A ce stade du document cela peut sembler encore abstrait ces histoire de portes logiques mais au fur et à mesure que nous allons entrer dans la programmation assembleur vous aller comprendre la puissant de ces tables de vérités NOT, AND, OR et XOR.
Utilisation des portes logiques sur des nombres binaires
Maintenant que nous en savons plus sur les nombres binaires, essayons de voir si nous réalisions des opération avec les tables de vérités NOT, AND, OR et XOR.
Prenons la valeur binaire 11001101 que se passerait-il si nous lui appliquions une logique NOT ? Pour y arriver il faut imaginez que chaque bit de ce chiffre est une entrée E et qu’elle vont donner une sortie S :
Le résultat est donc 00110010 la totalité des bits ont été inversé.
Essayons maintenant la porte logique AND.
Elle possède par défaut 2 entrées. Dans ce cas prenons de valeurs binaires : 10011101 et 11100011
Le résultat est donc 10000001.
Essayons les mêmes valeurs avec la logique OR :
Le résultat est donc 11111111.
Enfin avec la logique XOR :
Le résultat est donc 01111110.
Comment utiliser ces portes si j’ai plus de 2 valeurs en entrée ?
A l’exception de la logique NOT qui s’applique à un bit, les autres portes peuvent avoir un nombre d’entrées supérieur à 2. Pour connaître le résultat c’est assez simple. Imaginons que nous avons E1=1, E2=1 et que E3=0. Maintenant réalisons une logique AND sur ces 3 entrées. Pour cela commencez par prendre E1 et E2 et appliqué la logique AND :
E1 (1) AND E2 (1) = 1
Maintenant prenez le résultat est appliquez une logique AND avec E3 :
1 AND E3 (0) = 0
Donc E1 (1) AND E2 (1) AND E2 (0) =0
(chapitre 3) https://www.gamopat-forum.com/t78171-tutoriel-initiation-a-l-assembleur-debutant-part-3#2029705
Imaginons que je désire être averti si l’une les portes ma maison (celle de l’entrée et la celle de mon jardin) est ouverte par d’un signal lumineux. Dans ce cas j’installerai des capteurs sur ses deux portes reliés à une porte logique de type OR.
Si je veux savoir si les deux portes sont ouvertes en même temps, dans ce cas j’utiliserai une porte logique AND.
A ce stade du document cela peut sembler encore abstrait ces histoire de portes logiques mais au fur et à mesure que nous allons entrer dans la programmation assembleur vous aller comprendre la puissant de ces tables de vérités NOT, AND, OR et XOR.
Utilisation des portes logiques sur des nombres binaires
Maintenant que nous en savons plus sur les nombres binaires, essayons de voir si nous réalisions des opération avec les tables de vérités NOT, AND, OR et XOR.
Prenons la valeur binaire 11001101 que se passerait-il si nous lui appliquions une logique NOT ? Pour y arriver il faut imaginez que chaque bit de ce chiffre est une entrée E et qu’elle vont donner une sortie S :
LOGIQUE NOT | E | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
S | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
Le résultat est donc 00110010 la totalité des bits ont été inversé.
Essayons maintenant la porte logique AND.
Elle possède par défaut 2 entrées. Dans ce cas prenons de valeurs binaires : 10011101 et 11100011
LOGIQUE AND | E1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
E2 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
S | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Le résultat est donc 10000001.
Essayons les mêmes valeurs avec la logique OR :
LOGIQUE OR | E1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
E2 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
S | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Le résultat est donc 11111111.
Enfin avec la logique XOR :
LOGIQUE XOR | E1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
E2 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |
S | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
Le résultat est donc 01111110.
Comment utiliser ces portes si j’ai plus de 2 valeurs en entrée ?
A l’exception de la logique NOT qui s’applique à un bit, les autres portes peuvent avoir un nombre d’entrées supérieur à 2. Pour connaître le résultat c’est assez simple. Imaginons que nous avons E1=1, E2=1 et que E3=0. Maintenant réalisons une logique AND sur ces 3 entrées. Pour cela commencez par prendre E1 et E2 et appliqué la logique AND :
E1 (1) AND E2 (1) = 1
Maintenant prenez le résultat est appliquez une logique AND avec E3 :
1 AND E3 (0) = 0
Donc E1 (1) AND E2 (1) AND E2 (0) =0
(chapitre 3) https://www.gamopat-forum.com/t78171-tutoriel-initiation-a-l-assembleur-debutant-part-3#2029705
Sujets similaires
» [Tutoriel] Initiation à l'assembleur (débutant) part 3
» [Tutoriel] Initiation à l'assembleur (débutant)
» Initiation à Programmation
» Initiation aux JV pour un enfant de 3 ans ?
» [Tutoriel] Débuter la programmation avec Löve2D
» [Tutoriel] Initiation à l'assembleur (débutant)
» Initiation à Programmation
» Initiation aux JV pour un enfant de 3 ans ?
» [Tutoriel] Débuter la programmation avec Löve2D
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum