【x86汇编】第七章:上机操作

DOS环境下运行汇编源程序

必备软件

  • DOS系统
  • 编辑程序,记事本等待
  • 宏汇编程序
  • 符号交叉处理程序(可选)
  • 16位段连接程序:LINK.EXE
  • 库管理程序:LIB.EXE
  • 16位段调试程序:TURBO DEBUG(TD.EXE)

运行宏汇编程序的流程

  • 建立汇编源文件,扩展名为.ASM
  • 汇编,产生目标文件(.OBJ),此过程是通过宏汇编程序MASM实现的
  • 连接目标文件,建立可执行文件(.EXE),此过程是通过16位段的连接程序LINK实现的
  • 运行可执行文件,直接键入文件名即可运行

编译执行的命令

简单方式

MASM TEST;
LINK TEST;
TEST

  • 分号表示使用简单方式,不用提问,全部默认
  • 调用宏汇编程序 MASM.EXE,汇编源文件为TEST.ASM,生成TEST.OBJ
  • 调用连接程序 LINK.EXE,生成可执行文件 TEST.EXE
  • 执行TEST.EXE文件

提问方式

  • 不加分号,即可进入提问方式
  • 汇编提出的问题:源文件名、目标文件名、是否建立汇编列表文件LST、是否建立符号交叉引用文件CRF
  • 汇编列表文件LST可以打开看,符号交叉引用文件CRF则还需要经过交叉引用程序CREF.EXE进行处理,生成符号交叉列表文件EXAM.REF才能打开看
  • 连接提出的问题:要连接的目标文件、产生的可执行文件名、是否建立地址分配文件、是否要连接子程序库

多模块程序的运行及子程序库的使用

多模块程序的运行

如果一个程序,由多个模块组成,应该分别汇编,生成目标模块,再由连接文件,一起生成可执行文件

简单方式

LINK A+B+C;

默认的可执行文件以A命名

提问方式

目标名、生成的可执行文件名、MAP文件名、是否连接子程序库

子程序库的使用

处理复杂问题时,往往需要把反复使用的子程序集合在一起,组成子程序库(.LIB)

提问方式

LIB的提示信息及回答

提示信息回答
Library name :要进行操作的库名
Opration:命令字符及模块名或目标文件名
List file交叉引用列表文件名

库管理命令字符

命令字符功能
+把目标代码文件作为最后一个模块加入库中
-从库中删除一个模块
*从库中取出模块,写入目标文件中
;剩下的提示缺省值
&提示信息在一行内回答不下时,键入此字符将另起一行
ctrl + c终止库管理操作

应用举例

例子:建立一个子程序库(WAN.LIB),将子模块QUEUE、F10T2、F2T10放入该库

  • 建立子模块的源文件
  • 将子模块源文件分别汇编
  • 调用LIB将目标文件加入库中,按提示操作

windows下运行汇编源程序的方法

32位汇编必备软件

  • Windows操作系统
  • 源代码编辑程序
  • 常量和结构体预定义头文件:WINDOWS.INC
  • 常用的API函数声明头文件:KERNEL.INC,USER32.INC,GDI32.INC
  • 引入库:KERNEL.LIB,USER32.LIB,GDI32.LIB
  • 宏汇编程序6.11版本以上ML.EXE
  • 预定义头文件:RESOURCE.H
  • 资源编译器:RC.EXE和CVTRES.EXE
  • 32位段符号交叉引用处理程序:CREF.EXE,用来处理符号交叉引用文件(.SBR),生成符号交叉列表文件(.REF),如果调用了系统API,生成的REF将会十分复杂
  • 32位段连接程序LINK.EXE,连接COFF格式的目标文件
  • 库管理程序LIB.EXE
  • 32位段调试程序:TURBO DEBUG(TD32.EXE)

Windows环境汇编的特点

  • 从提问方式,变为提供多种开关供用户选择
  • 连接程序的交互也通过开关选择实现
  • 当用户使用菜单、图标、对话框、快捷键和一些声图资源,需要单独写资源脚本文件,该文件经过资源编译器,编译成资源文件(.RES),再由CVTRES.EXE转换为.OBJ类型的文件,这时才能连接
  • 开关可以通过 ML / ? 查询

常用的开关功能:

指令功能
/c表示只汇编不连接
/Fl汇编的同时生成列表文件
/FR汇编的同时生成符号交叉引用文件(.SBR)
/coff表示用coff格式产生目标文件
/Bl <连接程序名><源文件名>汇编连接同时进行
/Fm在连接时同时生成地址分配文件
/link<子程序库名>表示要连接子程序库
/LIBPATH当引入库与目标文件不在一个子目录中,用此开关指定路径
/Cp告诉MASM不要更改用户标识符的大小写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值