当前位置: 网学 > 编程文档 > 汇编语言 > 正文

win32asm原理

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
p;   [second_param]       ;压入第二个参数
         push      [first_param]             ;压入第一个参数
         call foo
         add sp,12                      ;平衡堆栈
PASCAL正好与C传递模式相反,它是通过左到右传递参数并在完成子程序后平衡堆栈的。
win16采取PASCAL传递方式是因为它的运行代码量小。C传递模式是在你不知道要传递
多少参数比如像wsprintf()子程序。在wsprintf()子程序中,子程序不能预先知道有
多少参数被压栈,所以你也不知道要怎样使堆栈平衡。
STDCALL是C和PASCAL传递模式的综合,它是通过右到左传递模式传递参数并平衡堆栈的,并
只有在win32下才专用的传递模式。但也有例外的是wsprintf(),你必须使用C传递模式。

.DATA
.DATA?
.CONST
.CODE
这四个指令是干什么用的呢?在win32下是没有段的,你记起来了吗?但是你仍然能按照
逻辑分区划分你的地址空间。这个最先的分区表是上一分区的结束。这里我们分为两个分区,
data和code。data分区又被分为三类:
.DATA 这个分区包含你的程序的初始化代码
.DATA?这个分区包含你程序的未初始化数据,有时你想预先分配一些内存但不想初始化它,
这个分区就是为这个想法而设的。这个未初始化数据的优势是:它不会增加程序容量大小。
比如,你在.DATA?分配了10,000字节容量,但你的程序并不是增加了10,1000字节。它仍然
和原大小一样。你只是仅仅告诉编译器当程序载入内存时你需要多少空间。就是这些。
.CONST 这个分区包含你的程序的常量定义说明。在这个分区定义的常量就不能被修改,因为
它们已经被定义。

你也并不是非要在你的程序中都要使用这三个指令,只要说明你需要的指令就行了。

剩下来的分区是代码区:.CODE。以下是它的主构架:

end
这里的任意的只是说明你的代码区域,还有就是这两个label要一样哟!你的所有代码
都在和 end 之间。

  • 下一篇资讯: 汇编语言的未来展望
  • 网学推荐

    免费论文

    原创论文

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