⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 002.txt

📁 会变语言实现的一些程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
 
/COMMENT:注释
 在PE文件的文件头后面加上文本注释,想在可执行文件中加入版权字符串可以用这个办法,如果字符串中包括空格,那么要在头尾加双引号
 
/DEBUG
 在PE文件中加入调试信息
 
/DEBUGTYPE:类型
 加入的调试信息类型,可以是CV或COFF
 
/DRIVER:类型
 链接Windows NT的WDM驱动程序时用,类型可以是WDM或者UPONLY
 
/DLL
 链接动态链接库文件时用
 
/DEF:文件名
 编写链接库文件文件时使用的def文件名,用来指定要导出的函数列表
 
/ENTRY:标号
 指定入口标号
 
/IMPLIB:文件名
 当链接有导出函数的文件时(如DLL)要建立的导入库名
 
/INCREMENTAL:ON|OFF
 是否增量链接,增量链接只重写可执行文件自上次链接后改动的部分,所以可以增加链接速度,但会增加文件长度
 
/LIBPATH:路径
 指定库文件的目录
 

 
选   项
 简   介
  
 
/MACHINE:平台名称
 指定输出的可执行程序运行平台,可以是ALPHA,ARM,IX86,MIPS,MIPS16,MIPSR41XX,PPC,SH3和SH4等
 
/MAP:文件名
 生成MAP文件
 
/OUT:文件名
 指定输出文件名,默认的扩展名是 .exe,如果要生成其他文件名,如屏幕保护*.scr等,则在这里指定
 
/RELEASE
 填写文件头中的校验字段
 
/SECTION:节区,属性
 改变节区的属性,如exe文件中代码节区的属性通常是不可写的,用户也可以在这里将它设置为可写,属性可以是:E,R,W,S,D,K,L,P和X等
 
/STACK:尺寸
 设定堆栈尺寸
 
/STUB:文件名
 这是一个有趣的参数,Win32文件有个简单的DOS文件头,以便在DOS下执行时打出“必须在Windows下执行”一类的消息,这部分称为DOS STUB,用户可以在这里指定用一个DOS可执行文件代替它,例如,可以用DOS的FDISK.EXE代替,那么程序在Windows下运行的会是用户编写的代码,但在DOS下运行的就是FDISK.EXE
 
/SUBSYSTEM:系统名
 指定程序运行的操作系统,可以是NATIVE,WINDOWS,CONSOLE,WINDOWSCE和POSIX等
 
/VXD
 编写Windows 95 VxD驱动程序时指定
 



由表2.3可见,Link的选项远比MASM要复杂,但并不是所有的选项都是频繁使用的,编写普通的Win32可执行文件时,必须用的选项只有/subsystem一个,其他的都可以用默认值。

一般来说,用MASM编译和链接一个Win32汇编源程序常用的命令是:

Ml /c /coff xx.asm

Link /subsystem:windows xx.obj yy.lib zz.res   (普通PE文件)

Link /subsystem:console xx.obj yy.lib zz.res   (控制台文件)

Link /subsystem:windows /dll /def:aa.def xx.obj yy.lib zz.res (DLL文件)

在Ml中使用/c选项表示只生成obj文件而不是直接产生exe文件,原因是链接的时候可能需要指定资源文件,所以不能让Ml直接用默认的方式链接;/coff选项是必需的,因为链接器只支持COFF格式的obj文件,其他的选项如/Cp和/Gz虽然也是必需的,但是可以在asm源文件中用伪定义设置,所以一般不在命令行中指定,以免遗漏。

使用Link的时候,/subsytem选项必须被指定,一般指定为windows,当编写控制台程序的时候要改为console,写dll的时候要用/def指定列表定义文件,同时要指定/dll选项。其他的一些参数如/stub,/section和/base等只在编写特殊用途的程序时才使用。

2.2.2  TASM系列

1. TASM的用法

TASM是Borland公司推出的汇编编译器,也是一种使用很广泛的编译器,和MASM相比,TASM的升级没有这么频繁。TASM早在1.0版本就有了对80386处理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些错误;早期的版本还有TASM 3.0和TASM 4.0,其中4.0版是TASM系列编译器编写DOS程序使用最广泛的版本。

到目前为止,TASM的最后一个版本是5.0版,这个版本支持Win32编程,并单独为Win32编程附带有一整套的32位程序:32位的编译器TASM32.EXE、链接器TLINK32.EXE和资源编译器BRC32.EXE。与这些32位程序对应的16位工具在软件包中依然存在,文件名为TASM.EXE,TLINK.EXE和BRC.EXE等。

TASM 5.0命令行的使用方法是:

TASM32 [选项] 源文件名[,[目标文件名],[列表文件名],[索引文件名]][;]

在Win32编程时TASM的常用选项如表2.4所示。

表2.4  TASM 5.0的常用选项

选   项
 简   介
 
/ml,/mx,/mu
 对大小写是否敏感:ml=全部敏感,mx=全局变量大小写敏感,mu=不敏感,Win32编程中必须用ml选项
 
/m#
 允许第#次编译扫描时可以向前引用,一般使用/m2
 
/i路径
 设定include文字所在的路径
 
/l,/la
 lst文件的格式:/l为正常格式,/la为扩充格式
 
/zi,/zd,/zn
 符号调试信息的控制:/zi为全部,/zd为仅有行号,/zn为不产生调试信息
 

TASM和MASM之间的导入库和目标文件等不能通用,程序员无法用Microsoft的链接器来链接TASM产生的obj文件,反之亦然,这是因为TASM的库文件和obj文件一直是OMF格式,与Microsoft使用的COFF格式不兼容。

TASM不是免费软件,无法从Borland的网站上直接下载,但在网上随处可以找到TASM 5.0版本的下载链接,Borland网站中仅提供了5.0版本到5.0r版本的升级包,升级包的下载地址是:

http://www.borland.com/borlandcpp/cppcomp/tasmfact.html

2. TLINK的用法

与TASM32.exe配合的链接器为TLINK32.exe,它的用法是:

TLINK32 选项 目标文件列表,输出文件,map文件,库文件,def文件,资源文件

指定这些文件名的时候,中间必须用逗号隔开,如果不想指定某个文件名,可以在逗号中间留空,TLINK32的常用选项如表2.5所示,注意,TASM32的选项是用斜杠开头,  TLINK32的选项却用减号开头。



表2.5  TLINK32的选项

选   项
 简   介
 
-c
 链接时区分大小写
 
-B:xxxx
 指定可执行文件装入内存的基地址
 
-Txx
 输出文件类型,-Tpe表示输出PE类型的exe文件,-Tpd表示输出PE类型的dll文件
 
-ax
 文件类型,-aa表示使用Windows API,-ap表示使用兼容代码
 
-v
 在输出文件中包括调试信息
 

下面是用TASM编译和链接一个Win32汇编源程序的常用命令:

TASM32 /ml /m2 xx.asm

TLINK32 /Tpe /aa /c xx.obj,,,yy.lib,,zz.res (普通PE文件)

TLINK32 /Tpd /aa /c xx.obj,,,yy.lib,aa.def,zz.res (DLL文件)

Windows API区分大小写,所以TASM32的/ml和TLINK32的-c选项必须指定,TLINK32中的-Tpe和-aa选项也必须指定,否则链接出来的就不是Win32可执行文件了。其他的选项如调试信息等则可以根据需要选择使用。

2.2.3  其他编译器

除了MASM和TASM这两种主流的汇编编译器,汇编编程中还可以用到一些其他的编译器,这些编译器大部分是免费的,如表2.6所示。

表2.6  常用汇编编译器列表

编 译 器
 简   介
 支持编程
 
NASM
 Netwide/National Assembler,开放源代码的免费软件,使用传统的Intel语法
 DOS,Win32,Linux
 
FASM
 支持8086-80486/Pentium/MMX/SSE/SSE2指令,16/32位代码
 DOS,Win32
 
SpAsm
 Specific Assembler,用于ReactOS/Win32的汇编编译器,有简化的语法和宏指令,自带IDE环境
 Win32
 
VisualASM
 附带IDE环境
 Win32

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -