IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 《Windows环境下32位汇编语言程序设计》 第二章笔记 -> 正文阅读

[开发工具]《Windows环境下32位汇编语言程序设计》 第二章笔记

在这里插入图片描述

Ml 的用法

Ml [/选项] 汇编源文件列表 [/link链接选项]
例:

Ml /c /coff /Cp Test.asm


Ml 的常用选项
选项简介
/c(常用)仅进行编译,不自动进行链接
/coff(必用)产生的obj文件格式为COFF格式
/Cp(常用)源代码区分大小写
/Fo filename指定输出的obj文件名
/Fe filename指定链接后输出的exe文件名
/Fl [filename]产生 .lst列表文件
/Gc函数调用类型用FORTRAN或PASCAL形式
/Gd函数调用类型用C语言形式
/Gz(常用)函数调用类型用StdCall形式
/I pathname指定include文件的路径
/link 选项指定链接时使用的选项
/Sc在列表文件中列出指令的时钟周期
/Zi增加符号调试信息

Link的用法

用Ml.exe 编译的COFF格式的obj文件可以用Link.exe链接成可执行PE文件
Link [选项] [文件列表]
例:

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.dif xx.obj yy.lib zz.res (DLL文件)
Link 的常用选项
选项简介
/Base:地址指定程序装入内存的基地址,一般PE文件默认的装入地址是0x400000处 ,dll文件装入0x10000000,用此选项可以修改这个默认值
/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,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驱动程序时指定


注意:

  • 在使用Link的时候,/subsystem选项必须指定,一般为windows,当编写控制台程序的时候要改为console。写dll的时候要用/def指定列表定义文件,同时要指定列表定义文件,同时要指定/dll选项。

RC资源编译器的使用

资源编译器用来把资源脚本文件(*.rc)编译成资源文件(*.rec),MASM32 SDK 软件包中使用的是Visual C++附带的Rc.exe程序
Rc [选项] 资源脚本文件名



masm32 SDK软件包的安装目录说明
目录介绍
\masm32IDE环境、内带的文本编辑程序和模板生成程序等
\masm32\include所有的头文件,windows.inc 为数据结构和预定义值得定义文件,Resource.h为资源文件的头文件,其他的.inc文件为对应同名DLL文件中的API函数声明文件
\masm32\lib所有的导入库文件,每个.lib文件是对应DLL文件的导入库
\masm\bin可执行文件目录,里面包括Ml.exe,Link.exe和Rc.exe等
\masm\help帮助文件目录
\masm32\m32lib一些常用C子程序的汇编实现源程序,如熟悉的stdin和stdout等,有一定的参考价值
其他目录只要为例子和可用可不用的小工具,例子广泛收集自网上不同作者的作品,很有参考价值

nmake的用法

nmake [选项] [/f 描述文件名] [/x 输出信息文件名] [宏定义] [目标]

说明如下:

  • /f 参数——如果描述文件名不使用默认的makefile,可以用/f参数指定。
  • /x 参数——如果想把屏幕输出的信息存到一个文件夹中,可以用/x参数指定(用DOS下的管道操作符nmake > 文件名的方法无效)
  • 宏定义——可以用新的定义覆盖描述文件中的宏定义。
  • 目标——指定建立描述文件中描述的某个文件,如果上面的例子中默认是生成最后的text.exe文件,也可以用nmake.res指定更新x.res文件
nmake的常用选项
选项简介
/A不检测文件时间,强制更新所有文件
/B文件时间相等时也要更新文件
/Dmake时显示文件新旧信息
/N显示make时要执行的命令,但并不真正执行
/Pmake时显示详细的信息

描述文件的语法

# nmake工具的描述文件例子
EXE = Text.exe		   #指定输出文件
OBJS = x.obj y.obj	   #需要的目标文件
RES = x.res			   #需要的资源文件

Link_FLAG = /subsystem:windows	#链接选项
ML_FLAG = /c /coff				#编译选项

#定义依赖关系和执行命令
$(EXE): $(OBJS) $(RES)
	Link $(LINK_FLAG) /out:$(EXE) $(OBJS) $(RES)
$(OBJS): Common.inc
y.obj:y.inc

#定义汇编编译和资源编译的默认规则
.asm.obj:
	ml $(ML_FLAG) $<
.rc.res:
	rc $<

#清除临时文件
clean:
	del *.obj
	del *.res


  • $@ ——全路径的目标文件
  • $* ——除去扩展名的全路径的目标文件
  • $? ——所有源文件名
  • $< ——源文件名(只能用在隐含规则中)
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:15:04  更:2021-12-07 12:16:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/24 9:21:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计