Quel registre x86 indique l'emplacement source dans l'instruction movsb ?
-
28-09-2019 - |
Question
Quel registre x86 indique l'emplacement source dans l'instruction movsb ?
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.