『壹』 这段汇编代码是什么意思,赋值过来又赋值过去的,怎么找到esi edi的来源呢
这就是内存拷贝啊
esi指向原内存首地址,edi指向目标内存首地址,
esi和edi应该是运行是确定的,用gdb调试一下就知道是什么值了
『贰』 游戏寻找二级基址出现这个mov [esi+edi*4+0000016C],ebx是什么意思
二维数组,一般可以遍历到有用的数据
『叁』 汇编指令 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个寄存器的变化
『肆』 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]什么意思
DWORD PTR ES:[EDI],将来ES:[EDI]这个内存强制转换为源dword双字类型,PTR就是转换符,DWORD为双字类型,在汇编中有BYTE,WORD,DWORD几种变量类型,分别对应1,2,4个字节。
整个语句的意思就是把
DWORD PTR DS:[ESI】内存单元的值传送到DWORD PTR ES:[EDI]单元保存,因为内存单元一般是2个字节的,这里强制转换为4个字节!
MOV 就是传送子令
『伍』 两道程序阅读题《微机原理及接口技术》
下段程序执抄行后,ESI= (1) ,EDI= (2) ,CF= (3)
mov esi,8899h;esi 1000 1000 1001 1001
mov edi,esi;edi 1000 1000 1001 1001
or esi,0; or 0000 0000 0000 0000 esi 1000 1000 1001 1001
sub edi,8811h; edi 8899-8811=0088h cf=0
esi=8899h
edi=0088h
cf=0
(1)(2)(3)只能填一条指令的话,不会做。。
『陆』 麻烦找出汇编语言中这个指令的错误:mov [esi],[edi]
MOV指令中,源操作数和目的操作数不能同时为存储器操作数。
『柒』 MOV [EDI+ESI],10H可以吗
不可以
1.操作数宽度不明
2.基址/变址寄存器不能同时出现在统一操作数寻址
『捌』 edi,esi寄存器是什么寄存器有什么作用
EDI和ESI分别是16位寄存器DI和SI的32位扩展
它们是目的变址寄存器和源变址寄存器,用于串操作指令中。
同时,它们也可以作为通用寄存器使用。
『玖』 汇编语言 esi,edi寄存器问题
都属于通用寄存器,所以一般场景下都可以随便用。就是有些传送指令规定了esi是源,edi是目的
『拾』 汇编中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,…………