Ch10Windows汇编程序设计基础

Ch10Windows汇编程序设计基础

ID:40837701

大小:310.01 KB

页数:49页

时间:2019-08-08

Ch10Windows汇编程序设计基础_第1页
Ch10Windows汇编程序设计基础_第2页
Ch10Windows汇编程序设计基础_第3页
Ch10Windows汇编程序设计基础_第4页
Ch10Windows汇编程序设计基础_第5页
资源描述:

《Ch10Windows汇编程序设计基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十章Windows汇编语言程序设计基础10.1Windows汇编环境10.2Windows下的子程序设计与函数调用10.3使用VC编译调试汇编程序10.1Windows汇编环境10.1.1Windows下的MASM与LINK10.1.2Windows汇编源程序的格式10.1.1Windows下的MASM与LINKMASM汇编器LINK连接器汇编连接步骤1.MASM汇编器MASM汇编器的命令行用法为:ml[/选项]汇编程序源文件[/link链接选项]选项功能/c仅进行编译,不自动进行链接/coff产生的obj文件格式为COFF格式/Cp源程序中区分大小写/F

2、ofilename指定输出的obj文件名/Fl[filename]产生.lst列表文件/Ipathname指定include文件的路径/link指定链接时使用的选项2.LINK链接器LINK编译器的命令行用法为:link[选项][文件列表]选项功能/out:输出文件名输出的文件名,扩展名默认为.exe/map:文件名生成MAP文件/libpath:目录名指定库文件的目录路径/implib:文件名指定导入库文件/entry:标号指定入口/comment:字符串在PE文件的文件头后面加上文本注释(版权信息)/stack:数字设定堆栈的大小/subsystem:系

3、统名指定程序运行的环境,可以是以下几种之一:Native,Windows,Console,Windowsce,Posix以一个源程序文件hello.asm为例,对它进行汇编链接,最后运行。用MASM汇编一个程序的方法为ml/c/coffhello.asm用LINK链接生成可执行文件的方法为:link/subsystem:consolehello.obj可以简化为:ml/coffhello.asm/link/subsystem:console3.汇编链接步骤10.1.2Windows汇编源程序的格式hello.asm例子程序格式一个Windows界面的汇编程序

4、1.一个显示字符串的汇编程序举例hello.asm(教材P311)等同于下面的C程序#includeintmain(){printf("HelloWorld!");return0;}2.程序格式(1)模式定义程序的第一部分是有关模式定义的3条语句:.386.modelflat,stdcalloptioncasemap:none这些语句定义了程序使用的指令集、工作模式。①指令集.386语句是汇编语言的伪指令,说明使用的指令集是哪一种CPU的。如果用汇编语言编写的是驱动程序或者驱动程序的一个小模块,而且驱动程序在特权级0上运行,就需要使用.

5、386p,后面带p的伪指令表示程序中可以使用特权指令。在编程中如果使用了MMX指令,除了定义.586之外,还要加上一句.mmx伪指令:.586.mmx②工作模式.model语句用来定义程序工作的模式,它的格式是:.model内存模式[,调用规则][,其他模式]在DOS的可执行程序中,可用到.com文件和.exe文件。在Windows环境下,可执行程序只有一种内存模式,即Flat(平坦)模式。②工作模式(续)在DOS下的汇编语言程序中,常常有这样的程序片段:MOVAX,DATAMOVDS,AX其作用是给数据段寄存器DS赋值。在编程时,必须考虑这些DS,ES,S

6、S等段寄存器是否正确设置。在Windows汇编语言程序中,则不必考虑这些问题。在程序中,不需要也不应该给CS,DS,ES,SS等段寄存器赋值。③option语句option语句有许多选项,这里介绍一种:optioncasemap:none这条语句说明程序中的变量和子程序名是否对大小写敏感。由于WindowsAPI函数中的函数名称是区分大小写的,所以应该指定这个选项“casemap:none”(2)includelib语句汇编程序中也需要调用一些外部模块(子程序/函数)来完成部分功能。例如:使用下面语句通知链接程序使用msvcrt.libincludelibm

7、svcrt.lib若要使用使用其他库文件,只需重复编写Includelib库文件名(3)函数声明语句格式:函数名称PROTO[调用规则]:[第一个参数类型][,:后续参数类型](4)include语句语法:include文件名例如:includekernel32.incincludeuser32.inc以后程序中用到user32.dll和kernel32.dll中的函数时,不需要事先声明就可以直接使用。(5)数据和代码部分程序中的数据部分和代码部分是分开定义的,分别以.data和.code开始,以end结束。end语句一般是整个程序的最后一条语句,end语句

8、后面跟的是起始标号,指出了程序执行的第一条指令的位置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。