253009514 发表于 2012-8-13 12:38:39

win32汇编栈平衡问题

push ebp
mov ebp,esp,
add esp,fffffff8
mov eax,dword ptr
mov ax,dword ptr
mov al,dword ptr
leave ret

add esp,fffffff8 这里是否为定义栈的大小空间?
那么为什么这里又是 esp 加8 而不是ebp加8呢,不是已经把esp的值赋值给ebp了吗
这里有点疑问 一种似觉似懂 又不是很明白求大神解释下

253009514 发表于 2012-8-14 23:12:52

求解答啊?

(^o^)/ 发表于 2012-8-20 17:37:02

dAb 发表于 2012-8-26 01:18:27

add esp,fffffff8
其实就是减8.。FFFFFFF8就负8.。。。。加上负8就是Esp减去8,进栈是高位到低位的,这点知道吧

win32和DOS不同,不能随便写内存。否则会引发保护错误提示,所以要设置esp开辟内存位置(栈)
用来装局部变量。。还有的是esp,,ebp.的作用你还没弄明白,esp就是真正的栈指针,ebp只是它默认的段是SS段寄存器,真正指向栈顶的是esp,,你改变了esp,ebp不会跟着变...就算你改了ebp,栈指针的偏移地址还一样是esp的值,,,,王爽老师的汇编书还是的理解通透啊,每个实验都应该自己尽量完成啊,基础还是要打好的。。还是要一步一个脚印啊,老师说的对啊,勿在浮沙高筑台。。。。。。
页: [1]
查看完整版本: win32汇编栈平衡问题