Création
d'entreprise
Posez votre question Signaler

Data segment, Assembleur DOS

biloute555 21Messages postés 24 mars 2008Date d'inscription - Dernière réponse le 5 nov. 2008 à 19:20
Bonjour,
voila ca fais pas longtemps que je fais de l'assembleur, et ya une question que je me pose.
on commence toujours son programme en faisant
mov AX, @data
mov DS, AX
Ok, ça permet d'initialiser le data segment, jusque la tout va bien, mais ce que je me demande c'est pourquoi on doit le faire en 2 étapes? pourquoi ne peut - on pas faire:
mov DS, @data et c'est tout??
Merci de votre aide
Lire la suite 

Data segment, Assembleur DOS »

1 réponses
Réponse
+0
moins plus
Réponse trouvée sur ce site http://erci.no-ip.com/origine/static/pdf/asm.htm

Les deux lignes suivantes,

mov ax, data
mov ds, ax

servent à initialiser le registre DS. Celui-ci pointe vers le PSP au début du programme mais nous voulons le faire pointer vers notre segment de données appelé “data”. Cela est nécessaire puisque la fonction 9 de l’interruption 21h attend l’adresse de la chaîne dans le couple DS:DX et que notre message se trouve dans le segment de données.

La première instruction charge l’adresse du segment “data” dans AX. La seconde transfère cette valeur de AX dans DS. Mais pourquoi diable utiliser AX comme intermédiaire ? Après tout, on pourrait écrire :

mov ds, data

Eh bien non ! Pour la simple raison que DS est un registre de segment et qu’en tant que tel on ne peut pas lui charger de valeur immédiate.

On appelle « valeur immédiate » toute constante tapée directement dans l’instruction elle-même. Exemples de chargement de valeurs immédiates :

mov ax, 135 ;charge 135 dans AX
mov bx, offset message ;charge l’offset de message dans BX
mov bx, offset fin – offset debut ;charge le nombre d’octets entre fin et debut dans BX

mov es, 10 ;instruction illicite car ES est un registre de segment !Remarque : une autre possibilité aurait été d'écrire : “PUSH AX” (empiler AX) puis “POP DS”(dépiler le dernier nombre empilé et le placer dans DS).

Voila.
Ajouter un commentaire
Ce document intitulé « Data segment, Assembleur DOS » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?