¿Qué registro x86 denota la ubicación de la fuente en la instrucción movsb?¿Qué registro x86 denota la ubicación de la fuente en la instrucción movsb?
Respuesta
En el modo de 32 bits, esi
.
En concreto, movsb
copias de un byte ds:esi
-es:edi
, los ajusta tanto esi
y edi
por 1, ya sea hacia arriba o hacia abajo dependiendo del indicador de dirección.
Un poco de trivia x86 relacionada para los jóvenes de hoy - 'SI' (o' ESI' en el mundo de 32 bits) significa 'índice de origen' y 'DI' significa 'índice de destino', que proviene del usos para fines especiales de estos registros. –
También tenga en cuenta que los registros de segmento predeterminados DS y ES pueden anularse para usar otros registros de segmento. –
@I. J. Kennedy: Solo el 'ds' puede ser anulado. El 'es' es fijo. –
cómo extraer esa información del manual de
Ahora que ha iniciado sesión en osdev.org, es el momento de pagar su deuda moral por hecho aprenderlo. :-)
Intel Manual Volume 2 Instruction Set Reference - 325383-056US September 2015 sección "Datos MOVS/MOVSB / MOVSW/MOVSD/MOVSQ-Move de String a String" dice:
Mueve el byte, palabra o palabra doble especificado con el segundo operando (fuente operando) a la ubicación especificada con el primer operando (operando de destino). Los operandos de origen y de destino se encuentran en la memoria. La dirección del operando fuente se lee de la DS: ESI o la DS: SI registra
programa de prueba mínima
Por último, hay que hacer un programa mínimo que utiliza la instrucción para ver si has entendido correctamente:
section .data
src db 0
dest db 1
section .text
global _start
_start:
mov esi, src
mov edi, dest
cld
movsb
/* dest == 0*/
versión Ejecutable de esta con las afirmaciones on GitHub.
- 1. Conjunto X86 - Manejo de la instrucción IDIV
- 2. Obtener la dirección de la instrucción actual para x86
- 3. mov instrucción en ensamblado x86
- 4. ¿Información confiable sobre el rendimiento de la instrucción de cadena x86?
- 5. x86 instrucción CMP Diferencia
- 6. ¿Qué hace la instrucción de montaje ORG?
- 7. Equivalente a la instrucción PAUSE x86 para PPC
- 8. Ayuda instrucción comprensión DIV en x86 ensamblador en línea
- 9. ¿Qué código de C++ se compila en la instrucción x86 REP?
- 10. ¿Qué sucede cuando una instrucción mov causa un error de página con interrupciones deshabilitadas en x86?
- 11. ¿Qué hace la instrucción movsbl?
- 12. ¿Qué significa la instrucción `test`?
- 13. ¿Qué es la "UE" en la arquitectura x86? (calcula la dirección efectiva?)
- 14. x86 Instrucción MUL de VS 2008/2010
- 15. ¿Qué hace la instrucción de ensamblaje LEAL?
- 16. ¿Dónde está la ubicación de registro predeterminada para SharePoint/MOSS?
- 17. ¿En qué se diferencia la arquitectura x64 de x86
- 18. ¿Cómo funciona la instrucción de pausa x86 en spinlock * y * ¿puede usarse en otros escenarios?
- 19. No hay ninguna fuente disponible para la ubicación actual
- 20. ¿Cómo hacer que `gcc` genere la instrucción` bts` para x86-64 del estándar C?
- 21. ¿Por qué se escribe el registro en una ubicación diferente a la esperada?
- 22. ¿Qué hace exactamente la instrucción BEQ?
- 23. ¿Qué significa la instrucción "(void) startGuardBegin;" do?
- 24. ¿Cuál es el significado de la instrucción x86 "call dword ptr ds: [00923030h]"?
- 25. ¿Qué sucede en la arquitectura x86 cuando ocurre una interrupción?
- 26. generación operando de instrucción CALL en x86-64 de AMD
- 27. ¿Por qué debería usar la ubicación nueva?
- 28. ¿Qué es la "excepción de instrucción de interrupción" en WinDbg?
- 29. ¿El objetivo de la instrucción Les?
- 30. MIPS "la" pseudo instrucción
¡Esa es la pregunta de entrada de 'osdev.org'! –
exactamente !. incluso podría haber buscado en Google cuando quería unirme a Osdev – geek1000
@ManuHegde Oye, al menos es poco probable que seas un bot, entonces. Que era lo que se suponía que debía evitar la pregunta. ;-) –