网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
学 Win32 汇编 [18]: 关于压栈(PUSH)与出栈(POP) 之二
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/26
下载{$ArticleTitle}原创论文样式

1 2 3 下一页

  由于 "栈" 是由高到低使用的, 所以新压入的数据的位置更低.

  ESP 中的指针将一直指向这个新位置, 所以 ESP 中的地址数据是动态的.

  每次 PUSH, ESP = ESP - x; 每次 POP, ESP = ESP + x;

  其中的 x 只能是 4 或 2, 因为 Win32 的 PUSH 只可以压入 32 位(默认)或 16 位的数据.

  ESP 有个名字叫 "栈顶", 其实它指向的是栈中最低位置的数据.

  实例查看 ESP 的变化:

; Test18_1.asm 
.386 
.model flat, stdcall 
 
include  Windows.inc 
include  kernel32.inc 
include  masm32.inc 
include  debug.inc 
includelib kernel32.lib 
includelib masm32.lib 
includelib debug.lib 
 
.data 
   ddVal1 dd 1 
   ddVal2 dd 2 
   dwVal1 dw 3 
   dwVal2 dw 4 
.code 
main proc 
   PrintHex esp ;0012FFA4 
   
   push ddVal1 
   PrintHex esp ;0012FFA0 
   push ddVal2 
   PrintHex esp ;0012FF9C 
   push dwVal1 
   PrintHex esp ;0012FF9A 
   push dwVal2 
   PrintHex esp ;0012FF98 
   
   pop dwVal2 
   PrintHex esp ;0012FF9A 
   pop dwVal1 
   PrintHex esp ;0012FF9C 
   pop ddVal2 
   PrintHex esp ;0012FFA0 
   pop ddVal1 
   PrintHex esp ;0012FFA4 
   ret 
main endp 
end main 
(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号