Section courante

A propos

Section administrative du site

Assembleur 80x86

DS

8086+ Registre de segment de données

Description

Le registre DS permet d'indiquer le registre de segment de données. Le registre DS pointe vers la zone de mémoire contenant les données associées au programme pointé par le registre CS. À titre d'exemple, supposons que le microprocesseur exécute les instructions suivantes :

  1. MOV AX,7000   ; Valeur 7000h dans le registre AX
  2. MOV DS,AX     ; Copie le contenu du registre AX dans le registre DS
  3. MOV AL,[0300] ; Copie le contenu de l'emplacement mémoire 7000:0300 dans le registre AL

Cette série d'instructions placera d'abord la valeur 7000h dans le registre DS. Il est illégal de déplacer une valeur dans le registre DS, elle doit donc être déplacée d'abord dans AX, puis dans le registre DS depuis le registre AX. Le segment de données commence alors à l'emplacement 70000h en mémoire. L'instruction «MOV AL,[0300]» est alors interprétée comme un déplacement de contenu de l'emplacement de mémoire 0300h dans le segment de données dans le registre AL. En conséquence, le microprocesseur exécute un cycle de bus de lecture de mémoire à partir de l'emplacement de mémoire physique 70300h (70000h + 0300h) et l'octet lu sera placé dans le registre AL du microprocesseur. Les crochets sont lus comme le contenu de l'emplacement mémoire.

Lorsqu'une instruction MOV ne spécifie pas quel segment, le microprocesseur assume toujours le segment de données. La valeur placée entre parenthèses est l'OFFSET (déplacement) dans le segment. Tout comme la portion OFFSET (déplacement) de l'adresse est limitée à 16 bits le segment de code (par la taille du registre IP), il est également dans les autres segments. Il est interdit de spécifier une adresse OFFSET (déplacement) supérieure à FFFFh entre crochets.



Dernière mise à jour : Samedi, le 21 novembre 2020