首页
社区
课程
招聘
[求助]第一次用push发现结果有问题
发表于: 2006-2-25 23:03 4245

[求助]第一次用push发现结果有问题

2006-2-25 23:03
4245
我的程序:
.386
.model flat, stdcall
option casemap:none

.code
start:
        mov ax, ds
        push ds    ;ds=0023h
        push ax
        push eax
       
        ret
end start

我用的是OllyDbg调试的

当push ds的时候,堆栈:
0012FFF8   00000023
0012FFFC   00000000

当push ax的时候,堆栈怎么成了:
0012FFF6   00230023
0012FFFA   00000000
0012FFFE          ?

难道不应该是:
0012FFF4   00000023
0012FFF8   00000023
0012FFFC   00000000

这是怎么回事啊?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
你push的是16位的操作数
2006-2-26 01:58
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 thebutterfly 发布
你push的是16位的操作数


push 16位操作数就会把2格16位的数合在一起放一个堆栈空间里?
2006-2-26 11:10
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
调试器显示堆栈默认是按照双字显示的, 而内存的存储单元是字节, 并非一个"堆栈空间"就是双字, 因为32位程序用得最多的是双字, 从方便的角度考虑OD按照双字显示
2006-2-26 12:39
0
游客
登录 | 注册 方可回帖
返回
//