[Tutoriel] Initiation à l'assembleur (débutant) part 2

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Tutoriel] Initiation à l'assembleur (débutant) part 2

Message par beddy le Mar 10 Mar 2015 - 10:30

(chapitre 1) http://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 :
 
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
: 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
00000
00011
00102
00113
01004
01015
 
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
La table AND
 
E1
E2
S
0
0
0
0
1
0
1
0
0
1
1
1
La table OR
 
E1
E2
S
0
0
0
0
1
1
1
0
1
1
1
1
La table XOR
 
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
avatar
beddy
Patient contaminé

Masculin Nombre de messages : 191
Age : 46
Localisation : Paris
Date d'inscription : 04/04/2013

http://somanybits.com

Revenir en haut Aller en bas

Re: [Tutoriel] Initiation à l'assembleur (débutant) part 2

Message par beddy le Mar 10 Mar 2015 - 10:33

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 :
LOGIQUE NOT
E11001101
S00110010
 
 
 
 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
E110011101
E211100011
S10000001
 
 
 
 
 Le résultat est donc 10000001.   

 Essayons les mêmes valeurs avec la logique OR : 
LOGIQUE OR
E110011101
E211100011
S11111111
 

 

 Le résultat est donc 11111111.
 
 Enfin avec la logique XOR :
LOGIQUE XOR
E110011101
E211100011
S01111110
 

 

 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) http://www.gamopat-forum.com/t78171-tutoriel-initiation-a-l-assembleur-debutant-part-3#2029705
avatar
beddy
Patient contaminé

Masculin Nombre de messages : 191
Age : 46
Localisation : Paris
Date d'inscription : 04/04/2013

http://somanybits.com

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum