11 en système hexadécimal. Alphabet hexadécimal

Notation hexadécimale ("Hex")- un moyen pratique de représenter des valeurs binaires. Tout comme le système numérique décimal a une base de dix et le système numérique binaire a une base de deux, le système numérique hexadécimal a une base de seize.

Le système numérique en base 16 utilise les nombres 0 à 9 et les lettres A à F. La figure montre les valeurs décimales, binaires et hexadécimales équivalentes pour les nombres binaires 0000 à 1111. Nous trouvons plus facile d'exprimer une valeur comme une chiffre hexadécimal plutôt que quatre bits

Comprendre les octets

Étant donné que 8 bits (octets) constituent le regroupement binaire standard, les nombres binaires 00000000 à 11111111 peuvent être représentés en notation hexadécimale sous la forme de nombres 00 à FF. Les zéros non significatifs sont toujours affichés pour compléter la représentation sur 8 bits. Par exemple, la valeur binaire 0000 1010 en hexadécimal serait 0A.

Représentation des valeurs hexadécimales

Veuillez noter: Il est important de distinguer les valeurs hexadécimales des valeurs décimales pour les caractères 0 à 9, comme le montre la figure.

Les valeurs hexadécimales sont généralement représentées dans le texte par une valeur précédée de 0x (comme 0x73) ou en utilisant un indice de 16. Plus rarement, elles peuvent être suivies de la lettre H, comme 73H. Cependant, comme le texte en indice n'est pas reconnu sur la ligne de commande ou dans les environnements de programmation, ils sont précédés de « 0x » (zéro X) dans la représentation technique des nombres hexadécimaux. Par conséquent, les exemples ci-dessus seraient respectivement affichés sous la forme 0x0A et 0x73.

La notation hexadécimale est utilisée pour représenter les adresses MAC Ethernet et les adresses IP version 6.

Conversions hexadécimales

La conversion de nombres entre valeurs décimales et hexadécimales est simple, mais diviser ou multiplier rapidement par 16 n'est pas toujours pratique. Si de telles conversions sont nécessaires, il est généralement plus facile de convertir une valeur décimale ou hexadécimale en binaire, puis de convertir la valeur binaire en décimale ou hexadécimale, en fonction de ce que vous souhaitez obtenir.

Avec de la pratique, il est possible de reconnaître les configurations binaires qui correspondent aux valeurs décimales et hexadécimales. La figure montre ces modèles pour certaines valeurs de 8 bits.

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.

Le système numérique familier aux humains est décimal. Il est basé sur dix chiffres de 0 à 9. Le système hexadécimal se distingue par la présence des six premières lettres de l'alphabet latin pour l'écriture des nombres en plus des nombres de base. C'est-à-dire que le chiffre 9 est suivi du symbole « A », qui correspond au chiffre 10 pour le système décimal. En conséquence, F en hexadécimal vaut 16 en décimal. L'utilisation de seize caractères dans le système n'est pas un choix aléatoire.

L'unité d'information est un peu. Huit bits forment un octet. Il existe un concept comme un mot machine - une unité de données représentant deux, c'est-à-dire seize bits. Ainsi, à l'aide de seize symboles différents, il est possible de décrire n'importe quelle information qui sera la plus petite particule lors de l'échange de données. Vous pouvez effectuer n'importe quelle opération arithmétique avec eux et le résultat, par conséquent, sera également obtenu dans le système hexadécimal.

Afin de distinguer qu'un nombre est écrit en hexadécimal, la lettre « h » ou l'indice « 16 » est écrit après lui.

Application

L'utilisation la plus répandue du système numérique hexadécimal concerne les codes d'erreur des produits logiciels, par exemple un système d'exploitation. Les numéros contenus dans ces codes sont standardisés. Disposant d'un tableau spécial, vous pouvez toujours déterminer ce que signifie exactement telle ou telle erreur.

Dans les langages de bas niveau, aussi proches que possible du code machine, le système hexadécimal est utilisé pour écrire des programmes. De nombreux programmeurs l'utilisent également lorsqu'ils travaillent avec des langages de haut niveau, car les nombres de ce système, à l'aide d'une table de correspondance spéciale, sont facilement convertis en système binaire sur lequel repose le fonctionnement de toute la technologie numérique. Toute information sur un ordinateur, qu'il s'agisse d'un fichier musical ou d'un document texte, après traduction, est représentée par une séquence de code binaire source, et il est plus pratique de la visualiser représentée par des symboles hexadécimaux.

En outre, l'une des utilisations des symboles hexadécimaux est la description des schémas de couleurs, c'est-à-dire que les trois composants R, G, B sont décrits d'une manière appropriée à un système donné. Cette approche d'enregistrement est appelée couleur hexadécimale

La possibilité d'afficher un programme en code hexadécimal vous permet de le déboguer, d'apporter des modifications, et les attaquants utilisent cette approche pour pirater des programmes.

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. Nous obtenons 0001 1010 0101 1110. Remplacez les groupes par les valeurs hexadécimales correspondantes, nous obtenons 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.

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.