Question

Quel registre x86 indique l'emplacement source dans l'instruction movsb ?

Était-ce utile?

La solution

En mode 32 bits, esi.

spécifique, copies sur une movsb d'octets de ds:esi à es:edi, les ajuste à la fois esi et edi par 1, soit vers le haut ou vers le bas en fonction de l'indicateur de direction.

Autres conseils

Comment extraire ces informations du manuel

Maintenant que vous êtes connecté à osdev.org, il est temps de payer votre dette morale en l'apprenant réellement.:-)

Référence du jeu d'instructions Intel Manual Volume 2 - 325383-056US septembre 2015 La section « MOVS/MOVSB/MOVSW/MOVSD/MOVSQ—Déplacer les données d'une chaîne à une chaîne » indique :

Déplace l’octet, le mot ou le mot double spécifié avec le deuxième opérande (opérande source) à l’emplacement spécifié avec le premier opérande (opérande de destination).Les opérandes source et destination sont situés en mémoire.Le l’adresse de l’opérande source est lue à partir des registres DS :ESI ou DS :SI

Programme de test minimal

Enfin, vous devez créer un programme minimal qui utilise l'instruction pour voir si vous l'avez bien comprise :

section .data
    src db 0
    dest db 1
section .text
global _start
_start:
    mov esi, src
    mov edi, dest
    cld
    movsb
    /* dest == 0*/

Version exécutable de ceci avec assertions sur GitHub.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top