汇编语言的编程步骤与调试方法_第1页
汇编语言的编程步骤与调试方法_第2页
汇编语言的编程步骤与调试方法_第3页
汇编语言的编程步骤与调试方法_第4页
汇编语言的编程步骤与调试方法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用文本编 辑软件汇编程序连接程序汇编语言得编程步骤与调试方法一、汇编源程序得建立1、使用工具(1) EDIT,记事本等文本编辑软件,编辑源程序,保存为、a sm文件;(2) ASM.MASM汇编程序,对源程序进行汇编,生成、obj文 件-目标文件,以及调试用、L ST-列表文件与、CRF-交叉引用表;(3) L ink连接程序,对使用得目标文件与库文件进行连接,生 成、ex e文件,同时调试用、map 地址映像文件;如果源程序无语法错误,上述三步将生成可运行得、exe文件, 如果运行结果无误,则完成对汇编程序得编程,如果运行后结果存在 错误,需要进行调试。(4) De b ug调试程序,对、

2、exe文件进行调试,修改,直到程序正 确。图3目标程序生成步骤图2、编程过程(1) 用文本编辑软件,编写扩展名为、asm得源文程序文件。(2) 用汇编程序对编好得源文件进行汇编。命令行:ma s m *、asm /如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些 信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称得标文件、obj。使用MASM50汇编程序进行汇编,输入命令行 mas m或者masm *、asm 后,根据提示,输入文件名,在汇编没有错误得情况下,如屏幕所示:汇编程序可生成三个文件卢、obj,*、Is 1:与*、c rfo水、obj-U标文件,用于连接生

3、成可执行文件;*、I s卜列表文件(可选),汇编语言汇编得机器语言与汇编语言对照表,可用于调试;次、cr仁交叉引用文件(可选),给出了用户定义得所有符号与对每个符号Jnlxl定义、引用得行号。阿命令提示符.Microsoft Macro Assembler Version 5.00jCopyvight Microsoft Covp 19811985 1987. All Fights vesevued.Object Filename Ugs.0R.T 1 : howSource listing NUL.LST: iCvoss-reference FNIIL CRP1:50722 - 36G7GG

4、 Bytes e(3) U标文件得连接命令行:link 严、obj S obj *、lib /连接程序,将多个口标程序及库文件,连接生成可执行得*、exe文件,同 时可选择生成*、map文件。map-地址映像文件,给出内存地址分配得有关信息。下图所示屏幕,为L ink连接两个口标文件,没有错误得情况下,生成*、ee文件。C:Xnasm50link show.obj pageF.objMicrosoft Oueplay Linker* Uers ion 3.60Copriight Miciosof 七 Covp 19831987- fi 11s: vese rued .Rim File SHOW

5、.EXE:List File NUL.MAP1:Libraries .LIB:(4) 执行程序执行*、exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工 具DEBUG就是针对汇编语言程序设计得一种调试工具,熟练使用DEBUG有 助于汇编语言程序员对于逻辑错误得调试。二、汇编程序得调试1、调试方法DEB U G工具得调试文件为可执行文件*、ex e,在命令行窗口或者DOS环 境下,执行DEBUG命令:命令行 D e bu g * e x e /DEBUG程序如果正常启动,提示符显示为出现提示符后,根 据调试得需要,输入正确得Deb u g命令,根据显示内容,修改源文件。2、常用DE

6、BUG命令(1) D命令-内存显示命令命令格式 格式1:D起始地址/格式2: D 起始地址结束地址IL字节数/调试程序得过程中,可利用该命令可以察瞧指定范围得内存单元得内容,以确 定对内存单元得修改就是否正确。可以通过命令指定显示得范围(格式2),在不指定显示长度得情况下(格式1), 将显示从起始地址开始12 8个字节得内容,如果只写D,则将从上一个D命令显示 结束得位置开始显示I 2 8个字节。在内存显示过程中,可以通过“Ctrl+S”键 暂停,按任意键可继续显示,以防显示过快,来不及察瞧,另外可以通过“Ctrl+S” 中止该命令得执行。(2) E命令一数据编辑命令命令格式格式1: E 起始

7、地址列表/格式2:E 起始地址/调试过程中,为了进行程序测试,需要改变内存或者寄存器得数据,此时利用 DEBUG得E命令可以非常方便得进行修改。E命令可以使用一连串得数据对内存连续地址单元进行修改,此时使用格式 1,也可以修改某个地址单元得内容后,按“空格”键,继续修改高地址单元内容。 使用E命令时,可以同时配合使用D命令,以确定就是否正确得完成了对内存单 元得修改。(3) U命令-反汇编命令命令格式:U起始地址结束地址调试过程中,可以利用U命令将口标程序反汇编为汇编程序,以观察汇编指令 得存放位置,汇编指令得正确与否,对于无源码得U标程序,还可以利用反汇编获取LI标程序得源码。4)G命令-运

8、行程序命令命令格式;:G=起始地址第一断点地址第二断点地址、调试过程中,可以利用G命令运行程序,观察结果得正确性,或者设置断点,利 用G命令观察程序运行到某一位置就是否正确,G命令最多可以设置1 0个断点, 当程序运行置断点时,停止执行,并显示当前所有寄存器与标志位得内容,以及下 一条将要执行得指令。如果G命令无起始地址,则从当前CS:IP内容为开始运行。(5)T命令-单步执行命令命令格式 格式1: T=地址格式2:T=地址执行指令得条数调试过程中,可以利用该指令单步执行,从指定地址开始(如果不指定,则从C S:IP开始),执行一条指令(格式1)或者执行指定条数得指令(格式2)后,停止执 行,

9、并显示当前所有寄存器与标志位得内容。(6)R命令-寄存器访问命令命令格式格式1: R格式2:R寄存器名称一般汇编程序中,会频繁得使用寄存器,使用R命令,可以在调试程序得过程 中方便得进行寄存器内容得察瞧。如果不指定寄存器名称(格式1 ),则显示所有寄 存器与标志位内容;可以指定需要察瞧得寄存器得名 称(格式2 ),只显示察瞧寄存器得内容。(7)Q命令-D e bug退出命令命令格式QDebug程序使用结束后,使用该命令退出Debugo3、Debug使用举例右边所示得汇编源程序EX、asm,在命令行窗口中输入下面命令行:皿” SEGMENTX DB 56 Y DB 67 Z DB 78 RESU

10、LT DB ?DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA BEGAIN:mow ax,data mow ds,ax mow al,x mul al mow dxax mow mul al add div z mov result,al non ah,4ch int 21hCODE ENDSEND BEGAINMASM EX asm /对EX、asm文件进行汇编,如果没有语法错误,则生成EX、o bj目标文件。输 入下面命令行:LINK EX、obj /对U标文件进行连接,连接后得到可执行文件EX、ex e,使用D e bug对该程序进 行调试。(1

11、)U-反汇编对EX、exe反汇编后,得到代码段地址与指令得对应图如下图所示。从反汇编得结果,可以得到指令在代码段得偏移地址,常与T命令与G命令联 合使用,使程序运行到固定得位置,查瞧结果。同时,可以从反汇编代码中瞧出, 变量会被汇编为直接寻址方式,使用变量在数据段内得有效地址表示。U13C1Z0000 13C1:0003 13C1=0005 13C1:0008 13G1=000A 13C1:000C 13G1=000F 13C120011 13G1:0013 13C1=0017 13C1:001A 13C1:001C 13C1:001EB8C0138ED8A00000F6E08BD0A0010

12、0F6E003C2F6360200A2030AB44fTCD2:a* 000(DS=13B0T T,执行一步,屏幕上显示执行指令后,通用寄存器、段寄存器与标志位得HOU MOU MOU MUL MOU MOU MUL ADDDIUMOUDS.AXAU 00001ALDX.AXAL,0001 ALA 乂,D*BYTE PTB 0002i .al(2)T-单步BX=0000ES=13B0J13C1:0003 8ED8AX=13C0BX=0000DS=13C0ES=13B013C1:0005 A00000 TAX=138 BX=0000DS=13C0ES=13B0F6E0CX=002EDX=0000

13、SP=0000I=0003 DS期MOUCX=002EDX=0000SP=0000SS=13C0CS=13C1IP=0005MOU AL,0000CX=002EDX=0000SP=0000SS=13C0CS=13C1IP=0008MUL ALBP=0000 SI=0000 DI=0000NU UP El PL NZ NA PO NCBP=0000 SI=0000 DI=0000NU UP El PL NZ NA PODS:0000=38BP=0000 SI=0000 DI=0000NU UP El PL NZ NA PO NC状态,下一条指令,以及指令中操作得存储器寻址方式对应得内存单元得内容。 (3 ) G 执行根据反汇编得情况,G断点常设置在正常返回DOS调用之前,即MOV AH, 4 CH,执行后,可以通过查瞧寄存器内容,或者D命令查瞧内存地址单元得内 容,检查程序得运行就是否正常。-G 001AAX =3 晅 BX=0000CX=002E DX=0C40SP=0000BP=0000 SI=0000 DI=0000DS=13C0 ES=13B0CST3C1 IP鬥01ANU UP El PL NZ NA PE NC13C1:001A B44C帀OU丽:(4 )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论