㈠ EDI和ESI能否像一般寄存器那样加减乘除
刚才在debug里面试过了。可以。可以执行的
㈡ 汇编指令 rep movs dword ptr es:[edi],dword ptr ds:[esi]
rep:重复执行指令复
rep movs dword ptr es:[edi],dword ptr ds:[esi]
意思就是制将ESI指向的地址的值以4字节方式拷贝到EDI指向的地址中,重复执行ECX次,每次执行后ESI+4,EDI+4,ECX-1,OD中在这段代码中下断后按F7单步步入就可以观察到这3个寄存器的变化
㈢ 汇编语言 esi,edi寄存器问题
都属于通用寄存器,所以一般场景下都可以随便用。就是有些传送指令规定了esi是源,edi是目的
㈣ 这段汇编代码是什么意思,赋值过来又赋值过去的,怎么找到esi edi的来源呢
这就是内存拷贝啊
esi指向原内存首地址,edi指向目标内存首地址,
esi和edi应该是运行是确定的,用gdb调试一下就知道是什么值了
㈤ 汇编 movsd 后edi 和 esi为什么会全加4
MOVSD是来 MOVS DWORD PTR ES:[EDI],DWIRD PTR DS:[ESI]的缩写。
MOVSD一次自复制4字节所以EDI和ESI全加4。
DWORD 4字节,WORD 2字节,BYTE 1字节。
㈥ edi,esi寄存器是什么寄存器有什么作用
EDI和ESI分别是16位寄存器DI和SI的32位扩展
它们是目的变址寄存器和源变址寄存器,用于串操作指令中。
同时,它们也可以作为通用寄存器使用。
㈦ 麻烦找出汇编语言中这个指令的错误:mov [esi],[edi]
MOV指令中,源操作数和目的操作数不能同时为存储器操作数。
㈧ mov edi,dword ptr ds:[esi+0x60] 在汇编语言中这是什么意思
ds:[esi+62c] 表示内存的地来址源 其中ds是段地址 [esi+62c]是偏移地址 所以 MOV DWORD PTR DS:[ESI+62C],EDI 就是将 edi 中的数据存储到内存中 地址为ds:[esi+62c]到 ds:[esi+62e]
㈨ 汇编中eax,ecx,edx,ebx,esp,ebp,esi,edi,eip分别是什么有什么用
这些来是32位的CPU中32位的寄存器的名字自。
寄存器是CPU内部的用于运行中暂存数据的存储单元。
在PC用的16位CPU 8086、8088中,寄存器的名字分别是AX(累加器),BX(基址寄存器),CX(计数寄存器),DX(数据寄存器),SP(堆栈指针),BP(基址指针),SI(源变址寄存器),DI(目的变址寄存器),IP(指令指针),等等……
这些寄存器除了从名字可以看得出来的用途以外,一部分寄存器也可以作为通用的一般数据寄存使用。具体每个寄存器的功能要与各种具体的指令关联起来才能理解清楚。
在386以上的32位CPU中,这些寄存器扩展成了32位的,名字就是在原来16位的名字前面加一个字母E,变成了EAX,EBX,…………
㈩ 反汇编MOV DWORD PTR DS:[ESI+62C],EDI是什么意思
dwore ptr 表示占用两个字节的大小
ds:[esi+62c] 表示内存的地址 其中ds是段地址 [esi+62c]是偏移地址
edi 它就是寄存器了内
所以 MOV DWORD PTR DS:[ESI+62C],EDI 就是将 edi 中的数据容存储到内存中 地址为ds:[esi+62c]到 ds:[esi+62e]