Section courante

A propos

Section administrative du site

Assembleur 80x86

LDS

INTEL 8088+ Load in DS

Syntaxe

LDS opérande_cible,opérande_source

Description

Cette instruction permet de copier une adresse de mémoire contenu sur 32 bits dans la paire de registre de segment DS et dans un registre d'offset spécifié.

Algorithme

Registre d'offset ← Source
Registre de segment DS ← Source + 2

Mnémonique

Instruction Opcode Description
LDS reg16, mem16:16 C5h /r Charge le DS:reg16 avec un pointeur long dans la mémoire. Invalide en mode 64 bits.
LDS reg32, mem16:32 C5h /r Charge le DS:reg32 avec un pointeur long dans la mémoire. Invalide en mode 64 bits.

Cycles d'horloge

Opérande Cycle d'horloge Taille en octets
8086 80286 80386 80486
reg16,reg32 16+EA 7 7 6 2 à 4
reg,reg (PM) - - 22 12 5 à 7

Exceptions

Message Mode réel Virtuel 8086 Mode protégé Description
#UD(Opcode invalide) X X X L'opérande source est un registre.
    X Cette instruction est exécuté en mode 64-bits.
#NP(Sélecteur)     X Le registre DS, ES, FS ou GS est chargé avec un sélecteur de segment non-nulle et le segment est marqué comme non présent.
#SS(Pile) X X X Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique
#SS(Sélecteur) X X X Le registre SS est chargé avec un sélecteur de segment non-nulle et le segment est marqué comme non présent.
#GP(Protection général) X X X Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique
    X Un segment de données nulle est utilisé comme référence mémoire
#GP(Sélecteur) X X X Un registre de segment est chargé, mais le descripteur de segment dépasse la limite du descripteur de la table.
X X X Un registre de segment est chargé et le bit TI de sélecteur de segment est fixé, mais le sélecteur LDT est un sélecteur nulle.
X X X Le registre SS est chargé avec un sélecteur de segment nulle dans un mode 64-bits ou avec CPL = 3.
X X X Le registre SS est chargé avec un sélecteur de segment RPL et le descripteur de segment DPL n'est pas égale au CPL.
X X X Le registre SS est chargé et le pointeur de segment n'est pas dans un segment de données écrivable.
X X X Le registre DS, ES, FS ou GS n'est pas chargé et le segment pointe sur des données ou un segment de code non-conforme, mais le RPL ou CPL est supérieur au DPL.
X X X Le registre DS, ES, FS ou GS n'est pas chargé et le segment pointe sur des données ou un segment de code en lecture.
#PF(Faute de page)   X X Une faute de page résultat de l'exécution de l'instruction
#AC(Vérifie l'alignement)   X X Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé

Exemple

L'exemple suivant permet de copier le contenu de la mémoire au déplacement 4326h dans le registre DS vers le registre BL, le contenu de 4327h vers le registre BH. Le contenu à un déplacement de 4328h et 4329h est copié dans le registre DS :

  1. LDS BX,[4326h]

Références

Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 409
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 143.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 642 à 646.

Dernière mise à jour : Lundi, le 1 septembre 2014