7 en hexadécimal. Systèmes numériques. Système de numérotation positionnelle hexadécimal

Le résultat a déjà été reçu !

Systèmes numériques

Il existe des systèmes de numérotation positionnels et non positionnels. Le système numérique arabe, que nous utilisons dans la vie quotidienne, est positionnel, mais pas le système numérique romain. Dans les systèmes de numérotation positionnelle, la position d'un nombre détermine de manière unique sa grandeur. Considérons cela en utilisant l'exemple du nombre 6372 dans le système numérique décimal. Numérotons ce nombre de droite à gauche en partant de zéro :

Alors le nombre 6372 peut être représenté comme suit :

6372=6000+300+70+2 =6·10 3 +3·10 2 +7·10 1 +2·10 0 .

Le nombre 10 détermine le système numérique (dans ce cas, c'est 10). Les valeurs de la position d'un nombre donné sont prises comme puissances.

Considérons le nombre décimal réel 1287,923. Numérotons-le à partir de la position zéro du nombre à partir de la virgule décimale vers la gauche et la droite :

Alors le nombre 1287.923 peut être représenté comme :

1287,923 =1000+200+80 +7+0,9+0,02+0,003 = 1·10 3 +2·10 2 +8·10 1 +7·10 0 +9·10 -1 +2·10 -2 +3· 10-3.

En général, la formule peut être représentée comme suit :

C n s n + C n-1 · s n-1 +...+C 1 · s 1 +C 0 ·s 0 +D -1 ·s -1 +D -2 ·s -2 +...+D -k ·s -k

où C n est un entier en position n, D -k - nombre fractionnaire en position (-k), s- système de numérotation.

Quelques mots sur les systèmes numériques. Un nombre dans le système numérique décimal se compose de plusieurs chiffres (0,1,2,3,4,5,6,7,8,9), dans le système numérique octal, il se compose de plusieurs chiffres. (0,1, 2,3,4,5,6,7), dans le système de numérotation binaire - à partir d'un ensemble de chiffres (0,1), dans le système de numérotation hexadécimal - à partir d'un ensemble de chiffres (0,1 ,2,3,4,5,6, 7,8,9,A,B,C,D,E,F), où A,B,C,D,E,F correspondent aux nombres 10,11, 12, 13, 14, 15. Dans le tableau Tab.1, les nombres sont présentés dans différents systèmes numériques.

Tableau 1
Notation
10 2 8 16
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 UN
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

Conversion de nombres d'un système numérique à un autre

Pour convertir des nombres d'un système numérique à un autre, le moyen le plus simple consiste d'abord à convertir le nombre au système numérique décimal, puis à convertir le système numérique décimal au système numérique requis.

Conversion de nombres de n'importe quel système numérique vers le système numérique décimal

À l'aide de la formule (1), vous pouvez convertir des nombres de n'importe quel système numérique en système numérique décimal.

Exemple 1. Convertissez le nombre 1011101.001 du système de nombres binaires (SS) en SS décimal. Solution:

1 ·2 6 +0 ·2 5 + 1 ·2 4 + 1 ·2 3 + 1 ·2 2 + 0 ·2 1 + 1 ·2 0 + 0 ·2 -1 + 0 ·2 -2 + 1 ·2 -3 =64+16+8+4+1+1/8=93,125

Exemple2. Convertissez le nombre 1011101.001 du système de nombres octal (SS) en SS décimal. Solution:

Exemple 3 . Convertissez le nombre AB572.CDF du système numérique hexadécimal en SS décimal. Solution:

Ici UN-remplacé par 10, B- à 11 heures, C- à 12, F- à 15 heures.

Conversion de nombres du système numérique décimal vers un autre système numérique

Pour convertir des nombres du système numérique décimal vers un autre système numérique, vous devez convertir séparément la partie entière du nombre et la partie fractionnaire du nombre.

La partie entière d'un nombre est convertie du SS décimal en un autre système numérique en divisant séquentiellement la partie entière du nombre par la base du système numérique (pour le SS binaire - par 2, pour le SS 8-aire - par 8, pour 16 -ary SS - par 16, etc. ) jusqu'à l'obtention d'un résidu entier, inférieur à la base CC.

Exemple 4 . Convertissons le nombre 159 de SS décimal en SS binaire :

159 2
158 79 2
1 78 39 2
1 38 19 2
1 18 9 2
1 8 4 2
1 4 2 2
0 2 1
0

Comme on peut le voir sur la Fig. 1, le nombre 159 divisé par 2 donne le quotient 79 et le reste 1. De plus, le nombre 79 divisé par 2 donne le quotient 39 et le reste 1, etc. De ce fait, en construisant un nombre à partir des restes de division (de droite à gauche), on obtient un nombre en SS binaire : 10011111 . On peut donc écrire :

159 10 =10011111 2 .

Exemple 5 . Convertissons le nombre 615 de SS décimal en SS octal.

615 8
608 76 8
7 72 9 8
4 8 1
1

Lors de la conversion d'un nombre décimal SS en octal SS, vous devez diviser séquentiellement le nombre par 8 jusqu'à obtenir un reste entier inférieur à 8. En conséquence, en construisant un nombre à partir des restes de division (de droite à gauche), nous obtenons un nombre en SS octal : 1147 (voir fig. 2). On peut donc écrire :

615 10 =1147 8 .

Exemple 6 . Convertissons le nombre 19673 du système numérique décimal en SS hexadécimal.

19673 16
19664 1229 16
9 1216 76 16
13 64 4
12

Comme le montre la figure 3, en divisant successivement le nombre 19673 par 16, les restes sont 4, 12, 13, 9. Dans le système numérique hexadécimal, le nombre 12 correspond à C, le nombre 13 à D. Par conséquent, notre Le nombre hexadécimal est 4CD9.

Pour convertir des fractions décimales régulières (un nombre réel avec une partie entière nulle) en un système numérique de base s, il faut multiplier successivement ce nombre par s jusqu'à ce que la partie fractionnaire contienne un zéro pur, ou que l'on obtienne le nombre de chiffres requis . Si, lors de la multiplication, un nombre avec une partie entière autre que zéro est obtenu, alors cette partie entière n'est pas prise en compte (elles sont incluses séquentiellement dans le résultat).

Regardons ce qui précède avec des exemples.

Exemple 7 . Convertissons le nombre 0,214 du système numérique décimal en SS binaire.

0.214
X 2
0 0.428
X 2
0 0.856
X 2
1 0.712
X 2
1 0.424
X 2
0 0.848
X 2
1 0.696
X 2
1 0.392

Comme le montre la figure 4, le nombre 0,214 est multiplié séquentiellement par 2. Si le résultat de la multiplication est un nombre avec une partie entière autre que zéro, alors la partie entière est écrite séparément (à gauche du nombre), et le nombre est écrit avec une partie entière nulle. Si la multiplication donne un nombre avec une partie entière nulle, alors un zéro est écrit à sa gauche. Le processus de multiplication se poursuit jusqu'à ce que la partie fractionnaire atteigne un zéro pur ou que nous obtenions le nombre de chiffres requis. En écrivant les nombres en gras (Fig. 4) de haut en bas, nous obtenons le nombre requis dans le système de nombres binaires : 0. 0011011 .

On peut donc écrire :

0.214 10 =0.0011011 2 .

Exemple 8 . Convertissons le nombre 0,125 du système numérique décimal en SS binaire.

0.125
X 2
0 0.25
X 2
0 0.5
X 2
1 0.0

Pour convertir le nombre 0,125 de SS décimal en binaire, ce nombre est multiplié séquentiellement par 2. Dans la troisième étape, le résultat est 0. Par conséquent, le résultat suivant est obtenu :

0.125 10 =0.001 2 .

Exemple 9 . Convertissons le nombre 0,214 du système numérique décimal en SS hexadécimal.

0.214
X 16
3 0.424
X 16
6 0.784
X 16
12 0.544
X 16
8 0.704
X 16
11 0.264
X 16
4 0.224

En suivant les exemples 4 et 5, on obtient les nombres 3, 6, 12, 8, 11, 4. Mais en hexadécimal SS, les nombres 12 et 11 correspondent aux nombres C et B. On a donc :

0,214 10 =0,36C8B4 16 .

Exemple 10 . Convertissons le nombre 0,512 du système numérique décimal en SS octal.

0.512
X 8
4 0.096
X 8
0 0.768
X 8
6 0.144
X 8
1 0.152
X 8
1 0.216
X 8
1 0.728

A obtenu:

0.512 10 =0.406111 8 .

Exemple 11 . Convertissons le nombre 159,125 du système numérique décimal en SS binaire. Pour ce faire, on traduit séparément la partie entière du nombre (Exemple 4) et la partie fractionnaire du nombre (Exemple 8). En combinant davantage ces résultats, nous obtenons :

159.125 10 =10011111.001 2 .

Exemple 12 . Convertissons le nombre 19673.214 du système numérique décimal en SS hexadécimal. Pour ce faire, on traduit séparément la partie entière du nombre (Exemple 6) et la partie fractionnaire du nombre (Exemple 9). De plus, en combinant ces résultats, nous obtenons.

Système de nombres hexadécimaux(également connu sous le nom de code hexadécimal) est un système de numérotation positionnelle avec une base entière de 16. Le terme hex (prononcé hex, abréviation de l'anglais hexadécimal) est également parfois utilisé dans la littérature. Les chiffres de ce système numérique sont généralement utilisés dans les chiffres arabes de 0 à 9, ainsi que les premiers caractères de l'alphabet latin A à F. Les lettres correspondent aux valeurs décimales suivantes :

  • *A-10 ;
  • *B-11 ;
  • *C-12 ;
  • *J-13 ;
  • *E-14 ;
  • *F-15.

Ainsi, dix chiffres arabes, couplés à six lettres latines, constituent les seize chiffres du système.

À propos, sur notre site Web, vous pouvez convertir n'importe quel texte en code décimal, hexadécimal ou binaire à l'aide du calculateur de code en ligne.

Application. Code hexadécimal largement utilisé en programmation de bas niveau ainsi que dans divers documents informatiques de référence. La popularité du système est justifiée par les solutions architecturales des ordinateurs modernes : ils ont un octet (composé de huit bits) comme unité d'information minimale - et la valeur d'un octet est commodément écrite à l'aide de deux chiffres hexadécimaux. La valeur de l'octet peut aller de #00 à #FF (0 à 255 en notation décimale) - en d'autres termes, en utilisant code hexadécimal, vous pouvez écrire n'importe quel état de l'octet, alors qu'il n'y a pas de chiffres « supplémentaires » non utilisés dans l'enregistrement.

Codé Unicode Quatre chiffres hexadécimaux sont utilisés pour enregistrer le numéro du caractère. La notation des couleurs RVB (Rouge, Vert, Bleu) utilise également souvent un code hexadécimal (par exemple, #FF0000 est une notation de couleur rouge vif).

Une méthode pour écrire du code hexadécimal.

Manière mathématique d'écrire. En notation mathématique, la base du système s'écrit sous forme décimale en indice à droite du nombre. La notation décimale du nombre 3032 peut s'écrire 3032 10, dans le système hexadécimal ce nombre aura la notation BD8 16.

Dans la syntaxe des langages de programmation. La syntaxe des différents langages de programmation définit différemment le format d'écriture d'un nombre en utilisant code hexadécimal:

* La syntaxe de certaines variétés de langage assembleur utilise la lettre latine « h », qui est placée à droite du nombre, par exemple : 20Dh. Si un nombre commence par une lettre latine, alors un zéro est placé devant lui, par exemple : 0A0Bh. Ceci est fait afin de distinguer les valeurs utilisant des constantes des constantes. code hexadécimal;

* Dans d'autres variétés d'assembleur, ainsi qu'en Pascal (et ses variantes, comme Delphi) et dans certains dialectes Basic, le préfixe « $ » est utilisé : $A15 ;

* Dans le langage de balisage HTML, ainsi que dans les fichiers CSS en cascade, le préfixe « # » est utilisé pour spécifier une couleur au format RVB avec une notation hexadécimale : #00DC00.

Comment convertir du code hexadécimal vers un autre système ?

Convertir de l'hexadécimal en décimal. Pour effectuer une opération de conversion du système hexadécimal vers le système décimal, vous devez représenter le nombre d'origine comme la somme des produits des chiffres par les chiffres du nombre hexadécimal et la puissance de la base.

SS binaire

SS hexagonal

Par exemple, vous devez traduire le nombre hexadécimal A14 : il comporte trois chiffres. En utilisant la règle, nous l'écrivons comme une somme de puissances en base 16 :

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2 560 + 16 + 4 = 2 580 10

Conversion de nombres binaires en hexadécimaux et vice versa.

Une table de cahier est utilisée pour la traduction. Pour convertir un nombre binaire en décimal, vous devez le diviser en tétrades distinctes de droite à gauche, puis, à l'aide d'un tableau, remplacer chaque tétrade par le chiffre hexadécimal correspondant. De plus, si le nombre de chiffres n'est pas un multiple de quatre, alors il faut ajouter le nombre de zéros correspondant à droite du nombre pour que le nombre total de chiffres binaires devienne un multiple de quatre.

Table de cahiers à traduire.

Pour convertir de l'hexadécimal en binaire, vous devez effectuer l'opération inverse : remplacer chaque chiffre par une tétrade du tableau.

SS binaire

SS octal

Exemple conversion de l'hexadécimal en binaire: A5E 16 = 1010 0101 1110 = 101001011110 2

Exemple conversion de binaire en hexadécimal: 111100111 2 = 0001 1110 0111 = 1E7 16

Dans cet exemple, le nombre de chiffres dans le nombre binaire d'origine n'était pas quatre (9), donc des zéros non significatifs ont été ajoutés pour un nombre total de chiffres de 12.

Traduction automatique. Une conversion rapide du système numérique hexadécimal vers l'un des trois systèmes populaires (binaire, octal et décimal), ainsi que la conversion inverse, peuvent être effectuées à l'aide d'une calculatrice standard incluse avec le système d'exploitation Windows. Ouvrez la calculatrice, sélectionnez Affichage -> Programmeur dans le menu. Dans ce mode, vous pouvez définir le système numérique actuellement utilisé (voir menu de gauche : Hex, Dec, Oct, Bin). Dans ce cas, la modification du système de numérotation actuel produit automatiquement une traduction.

Système de nombres hexadécimaux. notre premier programme.

Pour écrire des programmes en Assembly, vous devez comprendre le système de nombres hexadécimaux. Il n’y a rien de compliqué là-dedans. Nous utilisons le système décimal dans la vie. Je suis sûr que vous le savez tous, je vais donc essayer d'expliquer le système hexadécimal en utilisant une analogie avec le système décimal.

Ainsi, dans le système décimal, si nous ajoutons un zéro à n'importe quel nombre à droite, alors ce nombre augmentera de 10 fois. Par exemple : 1 x 10 = 10 ; 10 x 10 = 100 ; 100 x 10 = 1 000, etc. Dans ce système, nous utilisons des nombres de 0 à 9, c'est-à-dire dix nombres différents (en fait, c’est pour cela qu’on l’appelle décimal).

Dans le système hexadécimal, nous utilisons seize « chiffres ». J'ai spécifiquement écrit le mot « chiffres » entre guillemets, parce que... Il n'utilise pas seulement des chiffres. Et vraiment, comment est-ce possible ? Je m'explique : de 0 à 9 on compte de la même manière qu'en décimal, mais alors ce sera comme ça : A, B, C, D, E, F. Le nombre F n'est pas difficile compte, il sera égal à 15 dans le système décimal (voir tableau 1).

Nombre décimal

Nombre hexadécimal

Tableau 1. Systèmes décimaux et hexadécimaux.

Ainsi, si nous ajoutons un zéro à droite de n'importe quel nombre du système hexadécimal, alors ce nombre augmentera de16 une fois.

Exemple 1: 1 x 16 = 10 ; 10 x 16 = 100 ; 100x16 = 1000, etc.

Avez-vous pu distinguer les nombres hexadécimaux des nombres décimaux dans l'exemple 1 ? Et de cette série : 10, 12, 45, 64, 12, 8, 19 ? Ceux-ci peuvent être soit hexadécimaux, soit décimaux. Afin d'éviter toute confusion et que l'ordinateur puisse distinguer clairement un nombre d'un autre, en assembleur il est d'usage de placer le symbole h ou H après un nombre hexadécimal ( H est une abréviation pour l'anglais. hexadécimal (hexadécimal). Par souci de concision, on l'appelle parfois simplement Hex ) . Et ne mettez rien après la virgule. Parce que les nombres de 0 à 9 dans les deux systèmes ont la même signification, alors les nombres écrits 5 et 5h sont les mêmes.

Que. L'exemple 1 (voir ci-dessus) serait plus correct d'écrire ainsi : 1 x 16 = 10h ; 10h x 16 = 100h ; 100h x 16 = 1000h. Ou comme ceci : 1h x 10h = 10h ; 10h x 10h = 100h ; 100h x 10h = 1000h.

Nous verrons pourquoi le système hexadécimal est nécessaire dans les numéros suivants. Pour l’instant, pour notre exemple de programme, qui sera discuté ci-dessous, nous devons connaître l’existence de nombres hexadécimaux.

Alors, résumons. Le système de numérotation hexadécimal se compose de 10 chiffres (de 0 à 9) et de 6 lettres de l'alphabet latin (A, B, C, D, E, F). Si nous ajoutons un zéro à droite d'un nombre dans le système hexadécimal, alors ce nombre augmentera de16 une fois. Il est très important de comprendre ce sujet, puisque nous l'utiliserons constamment lors de l'écriture de programmes.

Parlons maintenant un peu de la façon dont je vais construire des exemples dans Assembly. Il n'est pas tout à fait pratique de les présenter au format HTML, il y aura donc d'abord le code du programme lui-même avec des lignes numérotées, et immédiatement après il y aura des explications et des notes.

Comme ça:

lignes Code du programme
(1) bouge ah,9

Explications :

À la ligne (1), nous faisons ceci, et à la ligne (15), nous faisons cela.

Grosse demande : NE copiez PAS les programmes d'une page dans le presse-papiers, puis collez-les dans le Bloc-notes (ou ailleurs) ! Retapez-les manuellement dans un éditeur de texte. Si vous disposez d'une imprimante, sélectionnez le programme, imprimez le fragment sélectionné, puis transférez-le dans l'éditeur à partir du papier. Tous les exemples doivent être tapés vous-même ! Cela accélérera la mémorisation des opérateurs.

Et plus loin. Il n'y a pas de différence entre les lettres minuscules et majuscules en assembleur. Enregistrements du formulaire :

L'assembleur les perçoit de la même manière. Vous pouvez bien sûr forcer l'assembleur à faire la distinction entre les caractères minuscules et MAJUSCULES, mais nous ne le ferons pas pour l'instant. Pour rendre le programme plus facile à lire, il est préférable de saisir les opérateurs en lettres minuscules et de commencer les noms des sous-programmes et des étiquettes en lettres majuscules. Mais cela dépend de qui sera à l'aise.

Passons donc à notre premier programme :

(1) Secteur CSEG

(2)org 100h

(4) Commencer :

(6) bouge ah,9

(7) mov dx, message de décalage

(8)int 21h

(10) int 20h

(11)

(12) Base de données de message "Bonjour tout le monde ! $"

(13)Fin de la CSEG

(14) fin Début

Afin d'expliquer tous les opérateurs de cet exemple, nous aurons besoin de plusieurs éditions. Par conséquent, nous omettrons simplement la description de certaines commandes à ce stade. Supposons simplement que cela devrait être ainsi. Nous examinerons ces opérateurs en détail dans un avenir très proche. Ainsi, les lignes numérotées (1), (2) et (13) sont simplement ignorées.

Les lignes (3), (5), (9) et (11) restent vides. Ceci est fait par souci de clarté. L'assembleur les omettra simplement.

Passons maintenant à l'examen des opérateurs restants. Le code du programme commence par la ligne (4). Il s'agit d'une marque qui indique à l'assembleur le début du code. La ligne (14) contient les opérateurs fin Begin ( Commencer l'anglais Commencer; fin fin). C'est la fin du programme. En général, au lieu du mot Commencer autre chose aurait pu être utilisé. Par exemple, Commencer:. Dans ce cas, il faudrait mettre fin au programme Fin Début (14).

Les lignes (6) (8) affichent le message Hello, world!. Ici, nous devrons parler brièvement des registres du processeur (nous examinerons ce sujet plus en détail dans le prochain numéro).

Un registre de processeur est une mémoire spécialement allouée pour stocker un nombre.

Par exemple:

Si nous voulons additionner deux nombres, alors en mathématiques, nous l'écrivons comme ceci :

A, B et C ce sont des sortes de registres (si l'on parle d'un ordinateur) dans lesquels certaines données peuvent être stockées. A=5 peut se lire comme suit : Attribue à A le chiffre 5 .

Pour attribuer une valeur à un registre, il existe un opérateur mov dans Assembler (de l'anglais move load). La ligne (6) doit être lue comme ceci : Chargement dans le registre A.H.numéro 9 (en d'autres termes, nous attribuons A.H.numéro 9). Ci-dessous, nous verrons pourquoi cela est nécessaire.

À la ligne (7) nous chargeons dans le registre DX adresse du message pour la sortie (dans cet exemple, ce sera la chaîneBonjour tout le monde !$).

Les interruptions seront abordées en détail dans les numéros suivants. Ici, je dirai quelques mots.

Interrompre MS-DOS c'est une sorte de sous-programme (partie MS-DOS), qui réside en permanence en mémoire et peut être appelé à tout moment depuis n'importe quel programme.

Considérons ce qui précède à l'aide d'un exemple (Notes en petits caractères):

Programme pour additionner deux nombres

AccueilProgrammes

A=5 On entre la valeur 5 dans la variable A

B=8 dans la variable B la valeur 8

Ajout de sous-programmes d’appel

maintenant C est égal à 13

A=10 même chose, juste des numéros différents

B=25

Ajout de sous-programmes d’appel

maintenant C est égal à 35

Fin du programme

Ajout de sous-programme

C=A+B

Retour du sous-programme nous retournons à l'endroit d'où nous avons appelé

Fin du sous-programme

Dans cet exemple, nous avons appelé le sous-programme deux fois Ajout, qui a ajouté deux nombres qui lui sont passés dans des variables A et B . Le résultat est placé dans la variable C. Lorsqu'un sous-programme est appelé, l'ordinateur se souvient d'où il a été appelé, puis, lorsque le sous-programme a fini de s'exécuter, l'ordinateur revient à l'endroit d'où il a été appelé. Que. Vous pouvez appeler des sous-programmes un nombre indéfini de fois depuis n'importe où.

Lors de l'exécution de la ligne (8) d'un programme Assembly, nous appelons un sous-programme (appelé dans ce cas une interruption), qui affiche la ligne à l'écran. Pour cela, nous plaçons en effet les valeurs nécessaires dans des registres. Tout le travail nécessaire (sortie d'une ligne, déplacement du curseur) est pris en charge par le sous-programme. Cette ligne peut se lire ainsi : appeler la vingt et unième interruption ( int de l'anglais interrompre interrompre). Attention, après le chiffre 21 il y a une lettre h . Comme nous le savons déjà, il s'agit d'un nombre hexadécimal (33 en décimal). Bien entendu, rien ne nous empêche de remplacer la ligne int 21h à int 33. Le programme fonctionnera correctement. C'est une pratique courante dans Assembler d'indiquer le numéro d'interruption en hexadécimal.

À la ligne (10), comme vous l'avez peut-être deviné, nous appelons l'interruption 20 h . Pour appeler cette interruption, vous n'avez pas besoin de spécifier de valeurs dans les registres. Il n'effectue qu'une seule tâche : quitter le programme (sortie vers DOS). Suite à l'exécution de l'interruption 20h, le programme reviendra là où il a été lancé (chargé, appelé). Par exemple, dans Norton Commander ou Navigateur DOS.

La ligne (12) contient le message à sortir. Premier mot ( message message) titre du message. Cela peut être n'importe quoi (par exemple, désordre ou ficelle, etc.). À PROPOS Faites attention à la ligne (7), dans laquelle nous chargeons dans le registre DX notre adresse de message.

Nous pouvons créer une autre ligne, que nous appellerons Désordre2. Ensuite, à partir de la ligne (9), insérez les commandes suivantes :

(10) mov dx, décalage Mess2

(13) Base de données de message "Bonjour tout le monde ! $"

(14) Mess2 db "C'est MOI ! $"

et réassembler notre programme. J'espère que tu peux deviner ce qui va se passer

Faites attention au dernier caractère des lignes Message et Mess2 - $. Il indique la fin de la ligne. Si nous le supprimons, alors 21 h l'interruption continuera à être émise jusqu'à ce qu'elle rencontre un caractère quelque part en mémoire $. Sur l'écran, nous verrons ordures .

Si vous disposez d'un débogueur, vous pouvez voir comment notre programme fonctionnera.

Le but de ce numéro n'était pas de comprendre en détail avec chaque opérateur. C'est impossible, car vous n'avez pas encore assez de connaissances. Je pense qu'après 3-4 versions, vous comprendrez le principe et la structure d'un programme Assembly. Peut-être que le langage de l'Assemblée vous a semblé extrêmement compliqué, mais croyez-moi, c'est à première vue.

Pour représenter les nombres dans un microprocesseur, il est utilisé système de numération binaire.
Dans ce cas, tout signal numérique peut avoir deux états stables : « niveau haut » et « niveau bas ». Dans le système de numérotation binaire, deux chiffres sont utilisés pour représenter n'importe quel nombre, respectivement : 0 et 1. Nombre arbitraire x=a n a n-1 ..a 1 a 0 ,a -1 a -2 …a -m sera écrit dans le système de nombres binaires comme

x = a n ·2 n +a n-1 ·2 n-1 +…+a 1 ·2 1 +a 0 ·2 0 +a -1 ·2 -1 +a -2 ·2 -2 +…+a -m ·2 -m

un je— chiffres binaires (0 ou 1).

Système de numérotation octale

Dans le système de numérotation octale, les chiffres de base sont les nombres de 0 à 7. 8 chiffres d'ordre inférieur sont combinés en un chiffre d'ordre élevé.

Système de nombres hexadécimaux

Dans le système numérique hexadécimal, les chiffres de base sont les nombres de 0 à 15 inclus. Pour désigner les chiffres de base supérieurs à 9 avec un symbole, en plus des chiffres arabes 0...9 dans le système numérique hexadécimal, des lettres de l'alphabet latin sont utilisées :

10 10 = A 16 12 10 = C 16 14 10 = E 16
11 10 = B 16 13 10 = D 16 15 10 = F 16.

Par exemple, le nombre 175 10 en système numérique hexadécimal s'écrira AF 16. Vraiment,

10·16 1 +15·16 0 =160+15=175

Le tableau montre les nombres de 0 à 16 dans les systèmes numériques décimaux, binaires, octaux et hexadécimaux.

Décimal Binaire Octal Hexadécimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 UN
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

Conversions binaire-octale et binaire-hexadécimale

Le système de nombres binaires est pratique pour effectuer des opérations arithmétiques à l'aide d'un microprocesseur, mais il est peu pratique pour la perception humaine car il nécessite un grand nombre de chiffres. Par conséquent, en technologie informatique, en plus du système de nombres binaires, les systèmes de nombres octaux et hexadécimaux ont été largement utilisés pour une représentation plus compacte des nombres.

Les trois chiffres du système de numérotation octale implémentent toutes les combinaisons possibles de chiffres octaux dans le système de numérotation binaire : de 0 (000) à 7 (111). Pour convertir un nombre binaire en octal, vous devez combiner les chiffres binaires en groupes de 3 chiffres (triades) dans deux directions, en commençant par le séparateur décimal. Si nécessaire, vous devez ajouter des zéros non significatifs à gauche du numéro d'origine. Si un nombre contient une partie fractionnaire, à sa droite, vous pouvez également ajouter des zéros insignifiants jusqu'à ce que toutes les triades soient remplies. Chaque triade est ensuite remplacée par un chiffre octal.

Exemple : convertissez le nombre 1101110.01 2 en système de nombres octaux.

Nous combinons les chiffres binaires en triades de droite à gauche. On a

001 101 110,010 2 = 156,2 8 .

Pour convertir un nombre octal en binaire, vous devez écrire chaque chiffre octal en code binaire :

156,2 8 = 001 101 110,010 2 .

Les quatre chiffres du système numérique hexadécimal implémentent toutes les combinaisons possibles de chiffres hexadécimaux dans le système numérique binaire : de 0 (0000) à F(1111). Pour convertir un nombre binaire en hexadécimal, vous devez combiner les chiffres binaires en groupes de 4 chiffres (tétrades) dans deux directions, en commençant par le séparateur décimal. Si nécessaire, vous devez ajouter des zéros non significatifs à gauche du numéro d'origine. Si le nombre contient une partie fractionnaire, à sa droite, vous devez également ajouter des zéros insignifiants jusqu'à ce que tous les cahiers soient remplis. Chaque tétrade est ensuite remplacée par un chiffre hexadécimal.

Exemple : Convertissez le nombre 1101110.11 2 en système numérique hexadécimal.

Nous combinons les chiffres binaires en tétrades de droite à gauche. On a

0110 1110.1100 2 = 6E,C 16 .

Pour convertir un nombre hexadécimal en binaire, vous devez écrire chaque chiffre hexadécimal en code binaire.

De nombreux utilisateurs d’ordinateurs comprennent qu’un ordinateur fonctionne dans un système de nombres binaires. Traditionnellement, les états d'un système binaire sont représentés par les chiffres 0 et 1, bien que, plus précisément, chaque état indique la présence ou l'absence d'un signal, c'est-à-dire il serait plus correct d'appeler les états « off » et « on » , ou « non » et « oui ». L'état « off » ou « non » correspond au chiffre 0, et l'état « on » ou « oui » correspond au chiffre 1. Les utilisateurs ordinaires n'ont généralement pas besoin de comprendre complètement la structure de l'ordinateur, cependant, le binaire Le système numérique se fait sentir sous la forme de diverses restrictions basées sur des puissances de deux. Une version plus compacte du système binaire est appelée hexadécimal. Le nombre seize est la quatrième puissance de deux. Il s'ensuit que vous pouvez tout simplement convertir de longues séquences binaires de zéros et de uns en courts hexadécimaux. Pour ce faire, divisez simplement la séquence binaire en groupes de quatre chiffres (chiffres) en commençant par le chiffre le moins significatif (à droite) et remplacez chaque groupe par la valeur hexadécimale correspondante.

Le système hexadécimal est généralement utilisé pour faciliter la perception des données binaires, car les conversions du système hexadécimal au système binaire et inversement sont effectuées en remplaçant simplement des chaînes. L'ordinateur fonctionne exclusivement avec des séquences binaires, et la notation hexadécimale de cette séquence est quatre fois plus compacte, puisque ce système a la base 16 (2 16) et le binaire 2. La séquence binaire peut être assez lourde. Par exemple, écrire le nombre 513 nécessite dix chiffres binaires (1000000001), mais seulement trois en hexadécimal (201). Cependant, pour représenter un nombre hexadécimal, seize symboles différents sont nécessaires, au lieu des dix qui sont utilisés dans le système de nombres décimaux que nous connaissons. Les dix premiers caractères sont des caractères compris entre 0 et 9, les autres sont des lettres de l'alphabet latin allant de A à F. Les lettres sont généralement (mais pas toujours) écrites en majuscules (majuscules) en notation hexadécimale du nombre. Les dix premiers caractères (de 0 à 9) sont écrits de la même manière que les nombres du système numérique décimal et leur correspondent. Les lettres comprises entre A et F correspondent à des valeurs comprises entre 10 et 15.

Considérons la correspondance des nombres de 0 à 15 dans les systèmes de nombres hexadécimaux et binaires.

Notation décimale Notation hexadécimale Notation binaire
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 UN 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Les entrées pour 10, 11, etc. dans les systèmes décimal, binaire et hexadécimal ne correspondent pas. Regardons un petit exemple. Prenons un nombre hexadécimal 1A5E. Pour convertir en binaire, remplacez simplement les chiffres hexadécimaux par les groupes binaires correspondants. Le résultat sera 0001 1010 0101 1110. Si nous supprimons les zéros insignifiants devant le nombre et l'écrivons sans séparateurs, nous obtenons 1101001011110. Pour la traduction inverse, nous divisons le nombre en groupes de quatre chiffres, en commençant par le plus bas ( sur le côté droit), et aussi pour plus de commodité, nous ajoutons des zéros insignifiants dans le groupe le plus élevé à 4 rangs. On obtient 0001 1010 0101 1110. Remplacez les groupes par les valeurs hexadécimales correspondantes, on obtient 1A5E.

Pour convertir un nombre hexadécimal en représentation décimale, vous pouvez utiliser le schéma par lequel nous écrivons les nombres décimaux. Dans un nombre décimal, chaque chiffre représente la puissance de dix correspondante, en partant de zéro et en augmentant de droite à gauche. Par exemple, le nombre décimal 123 signifie 1*10 2 + 2*10 1 + 3*10 0 . En utilisant une méthode similaire, nous convertissons le nombre 1A5E au système numérique décimal. Dans le système numérique hexadécimal, ainsi que dans le système numérique décimal, chaque chiffre désigne la puissance correspondante du nombre seize, en partant de zéro et en augmentant de droite à gauche. Les caractères 1 et 5 en hexadécimal correspondent aux valeurs 1 et 5 en décimal, et les caractères A et E correspondent à 10 et 14. Alors 1A5E peut être représenté en décimal comme 1*16 3 + 10*16 2 + 5 *16 1 + 14*16 0 = 6750. Cependant, pour évaluer des nombres hexadécimaux, il n'est pas du tout nécessaire de les convertir en nombres décimaux. Les règles de comparaison, d'addition et de multiplication dans ce système sont les mêmes que dans le système décimal, l'essentiel est de ne pas oublier que chaque chiffre peut contenir des valeurs de 0 à 15. Pour convertir rapidement des nombres entre systèmes numériques, vous pouvez utiliser une calculatrice standard sous Windows, pour cela il suffit de Dans le mode avancé de la calculatrice, sélectionnez un système numérique, entrez-y un nombre et sélectionnez le système numérique souhaité dans lequel afficher le résultat.

Étant donné que les nombres hexadécimaux uniquement numériques se confondent facilement avec les nombres décimaux, ils sont généralement marqués de manière à indiquer clairement que la notation hexadécimale est utilisée. Les entrées hexadécimales sont généralement marquées soit en ajoutant un « h » minuscule à la fin, soit en ajoutant un préfixe « 0x » avant le nombre. Ainsi, le nombre hexadécimal 1A5E peut être écrit sous la forme 1A5Eh ou 0x1A5E, où un « h » final ou un « 0x » initial indique que la notation hexadécimale est utilisée.