能力值:
( LV2,RANK:10 )
|
-
-
2 楼
push XXX 的意思就是暂存XXX到堆栈
其他不明白你的意思
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
就是说
push eax
inc eax
pop eax 这个成立吗?
push 1
pop 1 这个呢? 肯定是非法。不过push 1 不是非法吧?这个是什么意思呢?怎么弹出?
push 404444
pop 404444 这个也是非法吧? 怎么弹出?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
成立不成立,自己测试不就知道了?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
晕,我想知道是什么意思,不是简单的成不成立。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
去看INTEL的指令,那些可以,哪些不可以
|
能力值:
( LV12,RANK:1010 )
|
-
-
7 楼
[quote=;]...[/quote]
你汇编基础没打好.
push XX,是将参数进栈保存,pop 是将当前堆栈中的内容弹出到寄存器中.
----------------------------------------------------------------
就是说
push eax
inc eax
pop eax 这个成立吗? // 当然成立
push 1
pop 1 这个呢? 肯定是非法。不过push 1 不是非法吧?这个是什么意思呢?怎么弹出?
// pop的东西必须弹到寄存器中,你咋乱弹呢~~
push 404444
pop 404444 这个也是非法吧? 怎么弹出?
// 同上~~
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
pop的东西不一定弹到寄存器把 还可以弹出某内存里把
|
能力值:
( LV12,RANK:1010 )
|
-
-
9 楼
哎, 智障人士....
|
能力值:
(RANK:350 )
|
-
-
10 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
好強,讓大牛無言了~~~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
学习+膜拜
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
很囧.....
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
汇编基础没打好,应该属于智障了。反正怎么都无所谓,我就想知道是怎么回事。那push 1是压到哪了?如果push 1 改变esp值的话,怎么弹出这个push 1?push 1后的结果是什么?怎么弹出push 1? 还是没有好的答案。没有明白是怎么回事。
|
能力值:
( LV12,RANK:1010 )
|
-
-
15 楼
1. 那push 1是压到哪了?--> 压到你程序空间的局部堆栈里了
2. 如果push 1 改变esp值的话,怎么弹出这个push 1?
--> 堆栈向上自减,向下自增. push 1 后.ebp+4. 此时你再执行pop指令时,系统会把当前在栈顶的内容取出,存入某个寄存器中去.
-------------------------------------------------
我实在找不出怎么回答你问题的好方法了,总之啊.先把基础打好,再来问问题,就不会闹笑话了...
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
智障未必,汇障到是100%
push eax =>mov dword ptr ds:[esp] eax
add esp,4
inc eax
pop eax =>mov eax, dword ptr ds:[esp]
sub esp,4
自己看结果吧
|
能力值:
( LV9,RANK:180 )
|
-
-
17 楼
楼上写错了..
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
push 1后esp+4。 明白。 那push 1 是把00000001 压入吗?然后要出栈,就是弹出。需要pop esp+4?这个是非法的吧?还有,ebp+4是之前的栈。ebp是栈的指针,出压栈不是先进后出的吗?难道能把esp+4里的内容弹出来?
基础没打好,不过看书也没看懂。只能求教各位了。请大家帮帮忙,尽量说的详细一些。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
这个错了吗?哪里?应该是pop的解释吧?或者add esp,4 sub esp,4 都不应该存在?哦,应该换过来?
|
能力值:
( LV12,RANK:1010 )
|
-
-
20 楼
反正我是不说了.
其他同学,愿意教他的就教吧.哈哈...
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
晕,书里说得不明不白。怎么你说的也这样啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
貌似不只是汇编基础问题了.多看些书
|
能力值:
( LV9,RANK:180 )
|
-
-
23 楼
这样才对:
push eax => sub esp, 4
mov [esp], eax
pop eax => mov eax, [esp]
add esp, 4
你可看做 push 为先减再存
pop 为先取再加
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
push 1
相当于
mov eax, 1
push eax
但是这种语法只适用32位汇编,16位汇编不支持push后面跟常数。
另外,push进去的东东不一定要pop到同一个操作数,例如
push eax
pop ebx ; 结果EBX=EAX
pop后面不能跟常数,只能跟寄存器或内存变量,例如:
pop eax
pop dword ptr ds:[ebx]
都是正确的
但是
pop 1
是错误的。
|
能力值:
( LV3,RANK:30 )
|
-
-
25 楼
学汇编前,最好先学一门高级语言吧!否则等于在天书世界里面遨游!
|
|
|