什么x86寄存器表示movsb指令中的源位置?什么是x86寄存器表示movsb指令中的源位置?
回答
在32位模式下,esi
。
在具体的,movsb
拷贝一个字节从ds:esi
到es:edi
时,调整这两种esi
和edi
1,向上或向下根据方向标志。
当今年轻人的一些相关的x86琐事 - “SI”(或32位世界中的“ESI”)代表“源索引”,“DI”代表“目标索引”,它来自这些寄存器的特殊用途。 – 2010-10-08 04:16:42
另请注意,默认段寄存器DS和ES可被覆盖以使用其他段寄存器。 – 2010-10-08 04:44:46
@ I. J.肯尼迪:只有'ds'可以被覆盖。 'es'是固定的。 – 2010-10-08 05:05:24
如何从手动
提取信息,现在你已经登录到osdev.org,是时候通过实际学习它来支付你的道德债务。 :-)
Intel Manual Volume 2 Instruction Set Reference - 325383-056US September 2015部 “从字符串字符串MOVS/MOVSB/MOVSW/MOVSD/MOVSQ-移动数据” 表示:
移动的字节,字或双字与所述第二操作数指定(源操作数)与第一个操作数(目标操作数)指定的位置 。源操作数和目标操作数都位于内存中。 ESI或DS:源操作数的 地址从DS读取SI注册
最小的测试程序
最后,你必须使用的指令,看是否有最低限度的程序你理解正确的话:
section .data
src db 0
dest db 1
section .text
global _start
_start:
mov esi, src
mov edi, dest
cld
movsb
/* dest == 0*/
这个Runnable的版本断言on GitHub。
- 1. 为什么指向16位寄存器的指针是uword?
- 2. x86中的额外寄存器64位
- 3. 为什么SSE指令保留YMM寄存器的高128位?
- 4. 将两个x86 32位寄存器存储到128位xmm寄存器中
- 5. 程序集x86 movsb
- 6. 为什么x86寄存器的命名方式是?
- 7. MOV从YMM寄存器到RAX与intel x86-64指令
- 8. x86汇编寄存器和mov指令,并跳转抵消
- 9. 的x86寄存器值
- 10. x86程序集MOV指令 - 寄存器到寄存器和存储器到存储器
- 11. 加载到寄存器中的指令
- 12. x86:使用寄存器作为中间件,为什么?
- 13. 什么寄存器指向堆?
- 14. 为什么在FreeBSD中重置堆栈指针寄存器?
- 15. 为什么24位寄存器?
- 16. x86寄存器名称,寻址模式,位移和存储器
- 17. PIC寄存器(%ebx)是做什么的?
- 18. 如何设置寄存器中的位?
- 19. x86指令集的声明性表示
- 20. 指令指针是一个程序可见的寄存器吗?
- 21. “leal 0x10(%ebx),%eax”x86汇编指令中的0x10是什么?
- 22. 什么是x86架构中的“非虚拟化”指令?
- 23. x86中“PAUSE”指令的用途是什么?
- 24. 什么是桌面cpu上的8位寄存器?
- 25. 为什么mov指令直接使用ax而不是两个段寄存器?
- 26. Apache配置中的指令是什么?
- 27. 运行Windows XP的Intel x86机器上的内存位置1是什么?
- 28. x86 ENTER指令有什么问题?
- 29. 什么是ESP和EBP寄存器?
- 30. 什么是专用寄存器?
这是'osdev.org'的输入问题! – 2012-04-19 06:30:02
正是!当我想加入osdev时,甚至可能会使用Google搜索功能 – geek1000 2012-11-03 17:31:44
@ManuHegde嘿,至少你不太可能是机器人。这个问题应该是防范的。 ;-) – 2014-05-16 18:17:22