Si l'adressage bp est utilisé lors de l'accès à la mémoire, le registre de segment par défaut est "SS", qui est le segment de pile. Le segment de pile SS fait généralement référence à une zone mémoire qui fonctionne en mode pile ; dans une architecture qui utilise la gestion de mémoire segmentée pour l'allocation de mémoire de programme, le segment de pile est utilisé pour stocker les variables locales et les adresses de retour de fonction.
Le registre de segments est défini pour la gestion segmentée de la mémoire. Les ordinateurs doivent segmenter la mémoire pour l'allouer à différents programmes (similaire à la pagination du disque dur). Lors de la description de la segmentation de la mémoire, les informations de segment suivantes sont requises : 1. Taille du segment ; 2. Adresse de départ du segment ; 3. Attributs de gestion du segment (écriture interdite/exécution interdite/exclusivité système, etc.). Il est nécessaire d'utiliser 8 octets (64 bits) pour stocker cette information, mais le registre de segments ne comporte que 16 bits, donc seul le numéro de segment (sélecteur de segment, également traduit par « sélecteur de segment ») peut être stocké dans le registre de segment, puis le numéro de segment est mappé à l'existence GDT (table de descripteur global (segment), table d'enregistrement de numéro de segment global) dans la mémoire et lit les informations de segment.
8086CPU dispose de 20 lignes d'adresse et l'espace mémoire adressable maximum est de 1 Mo. Les registres 8086 ne font que 16 bits, et le pointeur d'instruction (IP) et le registre d'index (SI, DI) font également 16 bits. Il est impossible d'adresser 1 Mo d'espace avec une adresse de 16 bits. Par conséquent, la mémoire doit être segmentée, c'est-à-dire que l'espace de 1 Mo est divisé en 2 ^ 4, soit 16 segments, chaque segment ne dépassant pas 64 Ko (2 ^ 16, les lignes de données de 16 bits peuvent être adressées). Quatre registres de segments de 16 bits sont configurés dans le 8086 pour gérer quatre types de segments : CS est le segment de code, DS est le segment de données, SS est le segment de pile et ES est le segment supplémentaire. Une fois la mémoire segmentée, chaque segment possède une adresse de base de segment. Le registre de segments stocke les 16 bits de poids fort de l'adresse de base de segment. Cette adresse de 16 bits peut être formée en décalant l'adresse de 16 bits de quatre vers la gauche. bits (en ajoutant 4 zéros après).
Le registre de segment CS pointe vers le segment de mémoire où le programme est stocké. IP est utilisé pour stocker le décalage de la prochaine instruction à exécuter dans le segment. Les rassembler peut récupérer la prochaine fois dans la mémoire. segment. L’instruction à exécuter.
Le registre de segments SS pointe vers le segment de mémoire utilisé pour la pile, et SP est utilisé pour pointer vers le haut de la pile. Les assembler peut accéder à l'unité supérieure de la pile. De plus, lorsque le décalage utilise le registre pointeur BP, son registre de segment par défaut est également SS, et BP peut être utilisé pour accéder à l'intégralité de la pile, pas seulement au sommet de la pile.
Le registre de segment DS pointe vers le segment de données, et ES pointe vers le segment supplémentaire. Lors de l'accès à l'opérande, l'un des deux est combiné avec un offset pour obtenir l'adresse physique de l'unité de stockage. . Le décalage peut être une valeur spécifique, une adresse symbolique, la valeur d'un registre de pointeur, etc. La situation spécifique sera déterminée par le mode d'adressage de l'instruction.
Habituellement, le registre de segments de données par défaut est DS, à une exception près : lors de l'exécution d'opérations sur les chaînes, le registre de segments de l'adresse de destination est spécifié comme ES. Bien entendu, dans les instructions générales, on peut aussi changer le registre de segment de l'opérande en changeant le champ "remplacement de segment" dans le préfixe.
Les "registres de segments facultatifs" sont des adresses de segment qui peuvent être utilisées pour forcer les valeurs de ces registres de segments comme adresses d'opérandes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!