dad9 发表于 2011-8-10 07:55:51

疯狂的程序员中一个片段不理解-求解答

她自以为出了个很简单而又充满杀机的问题:pop eax指令计算机执行了哪些操作?
这时候,好多同学笑了。她不知道,但他们知道,甚至好多老师都知道,他们知道这些问题根本难不到绝影,想用这种办法整他,那是自己给自己找麻烦,不会让他下不了台,只会让自己下不了台。
像土匪这样的人,肯定说:“把栈顶的值送eax。”
成绩好的会补充:“把栈顶指针往下移4字节。”
绝影说:“mov eax,dword ptr add esp,4”

------------------------------{:5_96:}
我想问的是,他利用mov 和 add 指令解答老师的pop eax 做了什么

那么 esp 偏移 段地址 是什么 是DS?他这里应该是32位的所以esp+4

请大家帮助我   为什么要把 ds:esp 的传送到eax,

不是应该吧ecs:esp的传送到eax么?


dad9 发表于 2011-8-10 07:59:02

自己顶起 求解答

weixianlang 发表于 2011-8-10 08:51:21

ESP默认的段地址是 SS!

zfzhuman123 发表于 2011-8-10 09:58:55

pop eax指令 1.先把栈顶元素放入ax寄存器,2.然后增加偏移地址

1.mov eax,dword ptr sp的段寄存器是ss,也就是说ss:sp指向栈顶元素,mov .. , .. 将ss:sp所指向的元素放入ax
2.add esp,4   然后来增加sp即偏移地址指向新的栈顶!

parbbo 发表于 2011-8-10 10:12:10

默认是ss!!

汇编壹加壹 发表于 2011-8-10 10:12:32

求解                                    

dad9 发表于 2011-8-10 11:34:51

zfzhuman123 发表于 2011-8-10 09:58 static/image/common/back.gif
pop eax指令 1.先把栈顶元素放入ax寄存器,2.然后增加偏移地址

1.mov eax,dword ptr sp的段寄存器 ...

小弟资质愚钝
您的意思是如果 后面的 偏移 是 那么他的段地址就是 SS?{:5_92:}

像这样
mov eax,dword ptr    

hjg 发表于 2020-4-6 14:06:00

这小说,没点儿功底,还真看不懂
页: [1]
查看完整版本: 疯狂的程序员中一个片段不理解-求解答