汇编语言编程软件使用指南.docx
- 文档编号:10943533
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:19
- 大小:454.85KB
汇编语言编程软件使用指南.docx
《汇编语言编程软件使用指南.docx》由会员分享,可在线阅读,更多相关《汇编语言编程软件使用指南.docx(19页珍藏版)》请在冰点文库上搜索。
汇编语言编程软件使用指南
汇编语言编程和调试工具
一、汇编语言编程工具
学习汇编语言的目的就是要用汇编语言编程来解决实际问题,下面介绍二种常用的汇编语言编程环境:
宏汇编MASM6.11和TurboAssember5.0。
1.1、宏汇编MASM系统
在宏汇编MASM系统中,程序员可用二种方法来处理源程序:
命令行和集成环境。
1.1.1命令行命令
1、编写源程序
可用计算机系统中各种能编辑文本文件的编辑器来编辑汇编源程序。
常用的编辑器有:
EDIT、Q、Word、记事本、写字板、WPS等。
源文件的后缀为:
.ASM。
2、汇编程序
当源程序编写好后,可用MASM命令来汇编该源程序。
如果源程序没有语法错误,那么,将生成目标文件(.OBJ文件),为最终生成可执行文件作准备,但如果源程序有错误,汇编程序将显示出错误位置和原因,也可用列表文件(.LST文件)来查看出错位置和原因。
下面给出一些使用该命令的实例情况。
例1.1:
查看MASM命令的功能
…>masm/?
(*)
……
/ZiGeneratesymbolicinformationforCodeView
/ZdGenerateline-numberinformation
其中:
选项/Zi和/Zd是经常被引用的二个选项,因为它们与符号跟踪有关。
例1.2:
用MASM命令汇编源程序
…>masmtest
……
Invoking:
ML.EXE/I./Zm/ctest.asm
……
Assembling:
test.asm
如果MASM命令显示了类似如上的处理结果,那么,表示源文件TEST.ASM已成功汇编,并已生成了其目标文件TEST.OBJ。
例1.3:
用MASM命令汇编源程序
…>masmtest
……
Invoking:
ML.EXE/I./Zm/ctest.asm
……
Assembling:
test.asm
test.asm(10):
errorA2070:
invalidinstructionoperands
如果MASM命令显示了类似如上的处理结果,那么,表示源文件有错,没有生成其目标文件。
在本例中,显示第10行有语法错:
非法的指令操作数。
这时,要用编辑器阅读源程序的第10行,看看输入指令时是否有误。
假如源程序有许多错误,很难记住全部出错位置,那么,可用列表文件来辅助查错。
例1.4:
在汇编源程序的同时,生成其列表文件。
…>masmtest,,test
……
Assembling:
test.asm
test.asm(10):
errorA2070:
invalidinstructionoperands
列表文件TEST.LST是一个文本文件,可用编辑器直接阅读,并可看出其错误的位置和原因。
下面是一个列表文件的实例。
…>edittest.lst
Microsoft(R)MacroAssemblerVersion6.1108/26/0018:
42:
57
test.asmPage1-1
.modelsmall
.486
0000.data
.radix7
00002A080Fw2db60,11,18
0003000A0009w1dw10T,1001B
0000.code
.startup
movdl,7777h
test.asm(10):
errorA2070:
invalidinstructionoperands
00108BC2movax,dx
00120FA4C201shlddx,ax,1
0016D1D0rclax,1
.exit0
end
在此后面还有其它内容,但它们对查错没有帮助,所以,在此省略。
3、连接程序
当由源文件汇编成功后,即可用连接程序(LINK.EXE)生成其可执行文件。
例1.5:
查看连接程序(LINK.EXE)的具体选项。
…>link/?
LINK
Validoptionsare:
/?
/ALIGNMENT
/BATCH/CODEVIEW
……
/STACK/TINY
/WARNFIXUP
例1.6:
用连接程序生成执行文件。
方法1:
…>linktest
……
RunFile[test.exe]:
ListFile[nul.map]:
Libraries[.lib]:
DefinitionsFile[nul.def]:
LINK:
warningL4021:
nostacksegment
这种方法需要确认连接过程中的各种文件名,如果使用文件名的默认值,那么直接按“回车”键即可。
在上面四个文件名中,最重要二个文件名是:
执行文件名和库文件名。
一般情况下,无需更换最终生成的执行文件名;如果在连接过程中需要其它的库文件,则在显示第三行提示时,输入所需要的库文件名。
最后一行显示一个警告信息,提出本程序没有定义堆栈段,该警告信息可以不必理会,因为该执行文件是可运行的,在操作系统装入时会自动为其添加一个默认的堆栈段。
方法2:
在文件名后面加上分号“;”,默认使用各类文件的缺省值。
…>linktest;
……
LINK:
warningL4021:
nostacksegment
4、运行程序
当要运行所生成文件时,可直接输入其文件名即可。
…>test
5、符号调试程序
当程序的运行结果不是预期结果时,就需要调试程序,找出错误的语句或逻辑关系。
MASM系统提供了可用于源程序一级的调试工具CV(CodeView)。
有关CV的使用参见“调试工具”中CodeView的介绍。
例1.7:
用符号调试工具CV来调试程序TEST.ASM所生成可执行文件。
…>masm/Zi/Zdtest;假设其没有语法错
…>link/Cotest
…>cvtest.exe
1.1.2编程集成环境PWB
PWB(Programmer'sWorkBench)是MASM6.11提供的编程集成环境,在此环境下,程序员可直接编写源程序、汇编、连接和运行。
◆在汇编源程序时,如果有错误,系统将列举出所有出错位置和出错原因。
还可用Shife+F3和Shife+F4来定位前一个错误和后一个错误;
◆在连接时,可指定堆栈的大小、附加的库文件、符号跟踪等选项;
◆在运行时,可设置命令行参数、直接运行、按调试方式运行、用DOS命令来运行等。
例1.8:
查看PWB的启动方式
…>pwb/?
……
Usage:
PWB[
[
[/D[S|T|A]...]DisableCURRENT.STS,TOOLS.INI,Autoload
[/P{P|F}
[/PL]SetLastProgramList
[/E
[/M]Startatmark
[/R]Read-onlymode
[
[[/T]
通常情况下,在PWB后面跟一个将要编辑的源文件名。
假如要编辑源文件TEST.ASM,那么,可直接输入下面命令:
…>pwbtest.asm
1、编辑源文件
PWB的编辑功能与许多编辑器的功能类似,有:
建立新文件、保存文件、另存为、光标移动功能、块操作、插入/删除操作、恢复操作、查找/替换操作、设置编辑器的功能键和各类颜色等。
要想了解更全面的编辑功能,可查看菜单:
File、Edit、Search和Options的前四个菜单项。
在画面1.1(Options菜单中的“Colors…”)中,可选择各类窗口、菜单和文本等对象的背景色和前景色。
比如:
当要改变源程序的显示颜色时,可先在左边的列表框中选择“Text”列表项,然后再选择其背景色和前景色。
2、汇编和连接文件
画面1.1设置编辑器各类颜色的画面
在集成环境下,源程序的汇编和连接是一次性完成的。
当汇编任务结束,并且没有产生错误信息时,连接程序立即开始连接工作。
但如果源文件有错,则显示所有错误位置和原因,连接程序不会被执行。
在浏览错误信息时,可用Shife+F3和Shife+F4来定位前一个错误和后一个错误。
在连接时,如果需要某个库文件,那么,可选用Options菜单中的“LinkOptions”菜单项来设置,该菜单项的显示画面如画面1.2所示
画面1.2连接选项的部分设置画面
在该画面上还可为程序设置一个缺省的堆栈段,其大小也可由用户自行决定。
当生成执行文件需要多个模块连接时,就需要建立一个工程文件(.MAK)。
建立工程文件的步骤和画面如下:
(1)、输入工程文件名,其默认的后缀为.MAK。
输入画面如画面1.3所示
在画面1.3中还可选择工程目标文件的类型,该类型有:
EXE、COM、LIB、Windows的EXE或DLL等二十几种。
当然,对每种类型又有一些不同的要求,在此不在进一步展开
叙述了。
通常情况下,不必选择目标文件类型,其缺省类型就是DOSEXE。
画面1.3建立工程文件名的画面
(2)、工程文件的编辑
在画面1.3中输入工程文件名,并且按“OK”按钮时,系统将进入画面1.4,在该画面中可向当前工程中添加源程序,也可把某源程序从当前工程中删除。
画面1.4、编辑工程文件的画面
当输入的文件名不在工程文件中,则把该源文件添加到工程文件中,否则,将其从工程文件中删除。
当所有源文件都添加到工程文件中时,可按“SaveList”来保存该工程文件。
此后就可用打开工程文件的方式来连接该工程中的文件。
如果需要修改工程文件的话,则可先用Project菜单中的“OpenProject”菜单项打开工程文件,再用“EditProject”菜单项来激活画面1.4进行编辑。
3、运行程序
在运行程序时,可设置命令行参数、直接运行、按调试方式运行、用DOS命令来运行等。
通常情况下,在编写程序的初期,一般都用“调试方式”来运行程序。
当选用这种方式时,系统会自动进入CV(CodeView)的调试环境。
有关CV的使用参见“调试工具”中CodeView的介绍。
4、符号调试的设置步骤
编写程序很难做到:
编辑、汇编、连接、运行一次完成,除非程序的功能非常简单。
当运行的结果不符合要求时,就需要跟踪程序的运行。
一般来说,跟踪程序执行的工作又称为调试程序,即找出程序中不正常的逻辑关系和语句。
常用的调试手段有二种:
执行代码的调试和符号调试。
前者是在没有任何源程序信息的情况下进行的调试,其工作难度大、效率低,后者是源程序一级上进行的调试,其目标代码的执行过程就象是源程序的执行,这种调试手段效率高、调试难度低,也是目前最流行的调试手段(在各种编程环境下都有类似的调试工具)。
为了能进行符号调试,需要告诉汇编程序和连接程序保留源程序中的各种符号信息。
为此,可通过下面三步来设置一些命令选项。
(1)、设置生成选项
选择Options菜单中的“BuildOptions”菜单项,显示出画面1.5,并选择其中的“UseDebugOptions”选项。
画面1.5、设置生成选项的画面
(2)、设置汇编命令的选项
选择Options菜单中的“ProjectTemplates”→“CustomizeProjectTemplate”菜单项,显示出画面1.6。
画面1.6、修改汇编命令选项的画面
在该画面的“BuildRuleList”列表框中选择“macroAFLAGS_D“””,并把它修改为“macroAFLAGS_D“/Zi/Zd””。
(3)、设置连接命令的选项
选择Options菜单中的“LinkOptions”菜单项,与画面1.2所对应的是同一个画面,在此所要的部分画面如画面1.7所示,并选择“CodeView”选项。
画面1.7、连接过程选项的部分设置画面
经过上面三步设置后,在PWB环境下,用Run菜单中的“Debug”菜单项就可进行符号调试了。
1.1.3MASM的安装
宏汇编系统MASM6.11共有5张软盘:
Disk1~Disk5。
在Disk1中运行Setup.exe文件即启动系统的安装过程。
其安装过程与许多系统的安装大同小异,只有用户根据屏幕提示作适当的选择即可,所以,在此省略系统安装具体步骤的描述。
1.2、TurboAssember
TurboAssenmer系统是BorlandC++程序设计系统的一部分,可有选择地安装它。
该汇编系统有三个主要文件:
TASM.EXE、TLINK.EXE、TD.EXE和TD32.EXE,其中:
TD.EXE是16位程序的调试器,它只能显示16位寄存器,而TD32.EXE是32位程序的调试器。
有关它们的显示画面请参见画面2.2和2.3。
TurboAssenmer系统在汇编语言程序设计方面主要采用命令行的形式,当用其它文本编辑器编写好源程序(后缀为:
.ASM)后,即可用TASM和TLINK文件来处理它。
1、汇编源程序
TASM.EXE16-bitreal-modeassembler
TASMX.EXE16-bitprotected-modeassembler
TASM32.EXE32-bitprotected-modeassembler
例1.9查看TASM的功能选项
…>tasm/?
……
/zi,/zd,/znDebuginfo:
zi=full,zd=linenumbersonly,zn=none
例1.10汇编已有源程序TEST.ASM
…>tasmtest
假如源文件TEST.ASM有语法错的话,可用下面命令来生成其列表文件TEST.LST。
…>tasmtest,,test
…>typetest.lst|more
假如源文件没有语法错,那么可用TLINK.EXE连接它,以生成可执行文件。
2、连接程序
例1.11查看TLINK的功能选项
…>tlink/?
……
/nIgnoredefaultlibraries/fInhibitoptimizingfarcallstonear
/vFullsymbolicdebuginformation/GxGoodies
……
例1.12连接汇编得到的目标文件TEST.OBJ
…>tlinktest
3、符号调试程序
当程序的运行结果不是预期结果时,就需要调试程序,找出错误的语句或逻辑关系。
TurboAssember系统提供了可用于源程序一级的调试工具TD/TD32(TurboDebuger)。
有关TD的使用参见“调试工具”中TurboDebuger的介绍。
例1.13:
用符号调试工具TD来调试程序TEST.ASM所生成可执行文件。
…>tasm/Zi/Zdtest;假设其没有语法错
…>tlink/vtest
…>tdtest.exe
二、调试工具
2.1、DEBUG
启动DEBUG的一般命令如下:
DEBUG文件名[参数表]
其中:
文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。
当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中标志位的符号表示如表1所示,其所有命令及其含义如表2所示。
关于参数的几点说明:
1.进制:
在DEBUG中输入或显示的数据都是十六进制形式
表1DEBUG中标志位的符号表示
标志名称
溢出
OF
方向
DF
中断
IF
负号
SF
零
ZF
辅助进位
AF
奇偶
PF
进位
CF
置位状态
OV
DN
EI
NG
ZR
AC
PE
CY
复位状态
NV
UP
DI
PL
NZ
NA
PO
NC
表2DEBUG命令及其含义
命令格式
功能说明
A
[地址]
输入汇编指令
C
[范围]起始地址
对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元
D
[范围]
显示指定范围内的内存单元内容
E
地址字节值表
用值表中的值替换从“地址”开始的内存单元内容
F
范围字节值表
用指定的字节值表来填充内存区域
G
[=起始地址][断点地址]
从起点(或当前地点)开始执行,到终点结束
H
数值1数值2
显示二个十六进制数值之和、差
I
端口地址
从端口输入
L
[地址[驱动器号扇区扇区数]]
从磁盘读
M
范围地址
把“范围”内的字节值传送到从“地址”开始的单元
N
文件标识符[文件标识符…]
指定文件名,为读/写文件做准备
O
端口地址字节值
向端口输出
P
[=地址][指令数]
按执行过程,但不进入子程序调用或软中断
Q
退出DEBUG,不保存正在调试的文件
R
[寄存器名]
显示和修改寄存器内容
S
范围字节值表
在内存区域内搜索指定的字节值表。
如果找到,显示起始地址,否则,什么也不显示
T
[=地址][指令数]
跟踪执行,从起点(或当前地点)执行若干条指令
U
[范围]
反汇编,显示机器码所对应的汇编指令
W
[地址[驱动器号扇区扇区数]]
向磁盘写内容,(BX、CX)为写入字节数
2.分隔:
命令和参数、参数和参数之间要用空格、逗号或制表符等分隔
3.地址:
用“段值:
偏移量”的形式来表示地址,也可用段寄存器来代表“段值”
例如:
1000:
0,ds:
10,es:
200,cs:
30等
4.范围:
用来表示地址范围,从哪个地址开始,到哪个地址结束。
它有二种表示方式:
◆地址地址——前者表示起始地址,要用“段值:
偏移量”来表达,后者表示终止地址,只用“偏移量”来表示
◆地址长度——前者表示起始地址,要用“段值:
偏移量”来表达,后者表示该区域的大小,用字母’L’开头的数值来表示
例如:
100:
50100——段值为100,偏移量从50到100的内存区域,
100:
50L100——段值为100,偏移量从50开始的100个字节区域。
5.端口地址:
二位十六进制数值
6.字节值:
二位十六进制数值
7.字节值表:
由若干个字节值组成,也可以是用引号括起来的字符串
8.驱动器号:
0—驱动器A、1—驱动器B、2—驱动器C、3—驱动器D等
关于使用命令的几点说明:
1.在DEBUG中的提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行
2.命令是单个字母,命令和参数的大小写可混合输入
3.可用F1、F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令
4.当命令出现语法错误时,将在出错位置显示“^Error”
5.可用^C或^Break来终止当前命令的执行,还可用^S来暂停屏幕显示(当连续不断地显示信息时)
例2.1:
启动DEBUG,并装入test.exe文件(假设该文件已存在)。
解:
方法1:
…\>debugtest.exe
方法2:
…\>debug
-ntest.exe
-l
例2.2:
比较以DS为段值,偏移量从10到50的内存区域与从地址100:
20开始的内存区域。
解:
-CDS:
1050100:
20或-CDS:
10L41100:
20
例2.3:
显示以DS为段值,偏移量从10到50内存区域的单元内容,然后用’abc’来填充它。
解:
-DDS:
1050或-DDS:
10L41
-FDS:
1050‘abc’
例2.4:
显示十六进制1234与3421之和、差。
解:
-H12344321
例2.5:
把数据段区域DS:
0-40内的内容传送给从附加段ES:
10开始的内存中。
解:
-MDS:
040ES:
10
例2.6:
在数据段区域DS:
0-40内查找是否有字符串’CIH’。
解:
-SDS:
040‘CIH’
2.2、CodeView
CodeView是一个简单、直观的全屏幕调试工具,它可调试多种语言的源程序所生成的执行代码。
CodeView的调试窗口如画面2.1所示。
画面的左上窗口是调试器的主窗口,其显示被调试的源程序或执行代码,左下窗口是命令窗口,用户可输入各种DEBUG命令,右窗口是显示寄存器窗口,它可显示16位和32位寄存器的内容。
当然还有其它窗口,如:
内存窗口、查看内容窗口(Watch)和程序输出窗口(View)等。
画面2.1CodeView调试器的显示画面
1、功能键
F2:
显示/隐含的寄存器组窗口
F3:
以不同的显示方式显示当前执行的程序
F4:
显示程序的输出屏幕
F5:
执行到下一个逻辑断点,或到程序尾
F6:
依次进入当前屏幕所显示的窗口
F7:
与F5功能相同
F8:
单步执行指令,并进入被调用的子程序
F9:
在源程序行中设置/取消断点,用鼠标左键双击之也可
F10:
单步执行指令,但不进入被调用的子程序
2、命令窗口
在该窗口中,可输入前面介绍的DEBUG命令。
3、寄存器组窗口
可以直接在寄存器组窗口内修改各寄存器的内容和各标志位,还可以用Options菜单中的“32-BitRegisters”菜单项来切换16位和32位寄存器。
2.3、TurboDebuger
TurboDebuger的主要窗口和调试功能键与CV非常类似,也可以单步执行、设置断点、显示寄存器内容和查看内存内容等。
具体操作由读者在实际的调试过程中掌握、体会。
画面2.2和2.3是TurboAssember系统中16位和32位调试器的主要显示画面。
画面2.2TD调试器的显示画面
画面2.3TD32调试器的显示画面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 编程 软件 使用指南
![提示](https://static.bingdoc.com/images/bang_tan.gif)
文档标签
- 语言SOCKET编程指南
- 使用socketLinux语言
- linux语言使用编译
- Lingo软件使用指南
- PilotPioneer软件使用指南
- STEP7编程软件使用
- 汇编语言DOSBox软件使用方法
- vista120编程指南编程指南
- 语言软件编程规范
- talent编程指南编程指南
- STEP7编程软件的使用编程软件
- 微软编程语言
- VisualStudio编程软件使用
- 语言使用
- matlab调用语言编程
- 语言socket编程指南
- socket编程
- linuxFTP编程socket
- TensorFlow编程指南EagerExecutionTensorFlow
- 质量C++编程指南
- linuxFTP编程socket
- 语言指南测试
- 质量C++编程指南