什么X86寄存器表示MOVSB指令中的源位置?

有帮助吗?

解决方案

在32位模式下, esi.

具体而言 movsb 复制一个字节 ds:esies:edi, ,调整两者 esiedi 到1,取决于方向标志。

其他提示

如何从手册中提取这些信息

现在,您已经登录了Osdev.org,现在该通过学习来偿还道德债务了。 :-)

英特尔手册卷2指令集参考-325383-056US 2015年9月 “ movs/movsb/movss/movsd/movsq - 从字符串到字符串的移动数据”部分说:

将带有第二操作数(源操作数)指定的字节,单词或双字移动到第一个操作数(目标操作数)指定的位置。源操作数和目标操作数都位于内存中。源操作数的地址从DS:ESI或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*/

主张的可运行版本 在github上.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top