汇编 什么时候需要push pop,我见有些代码没有用也没出
__asm{//保存写入前的数据,用于驱动卸载恢复。movebx,dangqian//将dangqian的地址给EBXleaecx,yuanshidate//将yuans...
__asm
{
//保存写入前的数据,用于驱动卸载恢复。
mov ebx,dangqian //将dangqian的地址给EBX
lea ecx,yuanshidate //将yuanshidate的地址给ECX
mov al,byte ptr [ebx] //取EBX的第一个字节给AL
mov byte ptr [ecx],al //AL 内容以字节方式写入ECX=yuanshidate里
mov eax,[ebx+1] //EBX=dangqian的地址+1的4字节内容给EAX
mov [ecx+1],eax //EAX的内容写入ECX=yuanshidate的地址+1偏移处。
///////////////////////////
//写入数据
mov ebx,dangqian //将dangqian的地址给EBX
lea ecx,JmpDate //将JmpDate结构的地址给ECX
mov al,byte ptr [ecx] //取出JmpDate结构地址的第一个字节给AL
mov byte ptr[ebx],al //al=JmpDate.E9 ,将数据写入到EBX=dangqian的地址中。
mov eax,[ecx+1] //[ECX+1]=JmpDate.JMPADDR ,将数据写入到EAX里保存
mov [ebx+1],eax //将EAX的数据写入到EBX+1=dangqian的地址+1偏移处。
}
上面这段C++内敛汇编怎么不用成对的push pop哪?
是不是一段汇编代码只要不涉及运算就可以不需要push pop ? 展开
{
//保存写入前的数据,用于驱动卸载恢复。
mov ebx,dangqian //将dangqian的地址给EBX
lea ecx,yuanshidate //将yuanshidate的地址给ECX
mov al,byte ptr [ebx] //取EBX的第一个字节给AL
mov byte ptr [ecx],al //AL 内容以字节方式写入ECX=yuanshidate里
mov eax,[ebx+1] //EBX=dangqian的地址+1的4字节内容给EAX
mov [ecx+1],eax //EAX的内容写入ECX=yuanshidate的地址+1偏移处。
///////////////////////////
//写入数据
mov ebx,dangqian //将dangqian的地址给EBX
lea ecx,JmpDate //将JmpDate结构的地址给ECX
mov al,byte ptr [ecx] //取出JmpDate结构地址的第一个字节给AL
mov byte ptr[ebx],al //al=JmpDate.E9 ,将数据写入到EBX=dangqian的地址中。
mov eax,[ecx+1] //[ECX+1]=JmpDate.JMPADDR ,将数据写入到EAX里保存
mov [ebx+1],eax //将EAX的数据写入到EBX+1=dangqian的地址+1偏移处。
}
上面这段C++内敛汇编怎么不用成对的push pop哪?
是不是一段汇编代码只要不涉及运算就可以不需要push pop ? 展开
展开全部
这题目,和PUSH、POP,有什么关系?
追问
上面的代码是对的,没有错误,我就是想知道上面的代码干嘛不在
汇编的开头用上
push eax
push ebx
push ecx
结尾用上pop eax,如下面写入数据
pop ecx
pop ebx
pop eax
追答
汇编 什么时候需要push pop
--当主函数中寄存器(或存储空间)中的内容,不想被子函数破坏的时候,就可以用PUSH、POP来保护与恢复。(当然,也可以用其它的方法来保护。)
我见有些代码没有用也没出
--那就是说,这个程序中,并没有什么可以保护、恢复的。
楼主给出的程序,有什么东西需要保护和恢复吗?
楼主说:上面的代码是对的,没有错误,这就说明,不用保护和恢复。
那么:汇编的开头用上:
push eax
push ebx
push ecx
加上这几行,还想要保护什么呢?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询