汇编语言的编程步骤与调试方法

上传人:cn****1 文档编号:488969049 上传时间:2023-07-27 格式:DOC 页数:7 大小:187.50KB
返回 下载 相关 举报
汇编语言的编程步骤与调试方法_第1页
第1页 / 共7页
汇编语言的编程步骤与调试方法_第2页
第2页 / 共7页
汇编语言的编程步骤与调试方法_第3页
第3页 / 共7页
汇编语言的编程步骤与调试方法_第4页
第4页 / 共7页
汇编语言的编程步骤与调试方法_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《汇编语言的编程步骤与调试方法》由会员分享,可在线阅读,更多相关《汇编语言的编程步骤与调试方法(7页珍藏版)》请在金锄头文库上搜索。

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

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

3、标文件,用于连接生成可执行文件;*.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试;*.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、 引用的行号。(3) 目标文件的连接命令行:link *obj *obj *lib /连接程序,将多个目标程序及库文件,连接生成可执行的*exe文件,同时可选择生成*map文件。*map-地址映像文件,给出内存地址分配的有关信息。下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成 *.exe 文件。C-Xmasm60link shou-obj pagev.obj llicjasof tOuep

4、lay Llnkei* Ueion 3.60C5 Mt Coip 1983d.987- A 1 J.户置話h上鼻i*ued.:Run File SHOU-EXE1:List File NUL.MAP;Libraries LIBI:(4) 执行程序执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试 工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。汇编程序的调试1. 调试方法DEBUG工具的调试文件为可执行文件*.exe,在命令行窗口或者 DOS环境 下,执行 DEBUG 命令:命令行 Debug *.exe /DE

5、BUG 程序如果正常启动,提示符显示为“ _”。出现“ _”提示符后,根 据调试的需要,输入正确的Debug命令,根据显示内容,修改源文件。2. 常用 DEBUG 命令(1) D 命令 -内存显示命令命令格式格式1: D起始地址/格式2: D起始地址结束地址|L字节数/调试程序的过程中,可利用该命令可以察看指定范围的内存单元的内容,以 确定对内存单元的修改是否正确。可以通过命令指定显示的范围 (格式 2),在不指定显示长度的情况下 (格式 1),将显示从起始地址开始128个字节的内容,如果只写 D,则将从上一个D 命令显示结束的位置开始显示128个字节。在内存显示过程中,可以通过“Ctrl+S

6、” 键暂停,按任意键可继续显示,以防显示过快,来不及察看,另外可以通过“ Ctrl+S ”中止该命令的执行。(2) E 命令-数据编辑命令命令格式格式1: E起始地址列表/格式2: E起始地址/调试过程中,为了进行程序测试,需要改变内存或者寄存器的数据,此时利 用DEBUG勺E命令可以非常方便的进行修改。E 命令可以使用一连串的数据对内存连续地址单元进行修改,此时使用格式 1,也可以修改某个地址单元的内容后,按“空格”键,继续修改 高地址单元内 容。使用E命令时,可以同时配合使用D命令,以确定是否正确的完成了对内存 单元的修改。(3) U 命令-反汇编命令命令格式:U起始地址结束地址调试过程中

7、,可以利用U命令将目标程序反汇编为汇编程序, 以观察汇编指令的存放位置,汇编指令的正确与否,对于无源码的目标程序,还可以利用反汇 编获取目标程序的源码。(4)G命令-运行程序命令命令格式:G=起始地址第一断点地址第二断点地址.调试过程中,可以利用G命令运行程序,观察结果的正确性,或者设置断点, 利用G命令观察程序运行到某一位置是否正确,G命令最多可以设置10个断点, 当程序运行置断点时,停止执行,并显示当前所有寄存器和标志位的内容, 以及 下一条将要执行的指令。如果G命令无起始地址,则从当前 CS:IP内容为开始运行。(5)T命令-单步执行命令命令格式 格式1: T=地址格式2: T=地址执行

8、指令的条数调试过程中,可以利用该指令单步执行,从指定地址开始(如果不指定, 则从CS:IP开始),执行一条指令(格式1)或者执行指定条数的指令(格式 2) 后,停止执行,并显示当前所有寄存器和标志位的内容。(6)R命令-寄存器访问命令命令格式格式1: R格式2: R寄存器名称一般汇编程序中,会频繁的使用寄存器,使用R命令,可以在调试程序的过程中方便的进行寄存器内容的察看。如果不指定寄存器名称(格式1),则显示所有寄 存器和标志位内容;可以指定需要察看的寄存器的名 称(格式2),只显示察看寄存器的内容。(7)Q命令-Debug退出命令命令格式 QDebug程序使用结束后,使用该命令退出Debug

9、使用举例右边所示的汇编源程序,在命令行窗口中输入下面pHTR SEGMEN*Y DB 67Z DB 78RESULT PB ?DATA ENDS CODE SEGI1EHIASSUME CSiCODe,DS:DATA BEGAlIH;mon ax .data nkou ds.ax mov al nul Hl mon dKaxnul al add辭* din z nou result nov ah rUch int 21hCODE ENDSEND 9ECAIH命令行:MASM /对文件进行汇编,如果没有语法错误,则生成目标文件。输入下面命令行:LINK /对目标文件进行连接,连接后得到可执行文件

10、,使用Debug对该程序进行调试。(1) U-反汇编对反汇编后,得到代码段地址和指令的对应图如下图所示。从反汇编的结果,可以得到指令在代码段的偏移地址,常与 T命令和G命令 联合使用,使程序运行到固定的位置,查看结果。同时,可以从反汇编代码中看 出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。(2) T-单步每按一下T,执行一步,屏幕上显示执行指令后,通用寄存器、段寄存器和标 志位的状态,下一条指令,以及指令中操作的存储器寻址方式对应的内存单元的AX=13C0DS=13BW ES=13EU13C1:0003 8EDBPtCX=002ESP=000BS S =1 冲 Em UP

11、: =1 Meirp=n be 3nou bw TBP=B000 S: I =Q&0G DI =0300NU UP El PL NZ NA P0 NCAX=13C0DS=13CM ES=13EU13C1:0005 A泗盹0Pt=002 E DX=000B F=000BSG=13C0CG=13C1 lP=0H0bMOU AL,0Q00EP=000BI=0000 DI=0000NU JP El PL HZ NR P0 皿DS:000E)-38口 X=1 33b1DS=13C013C1:0008 FE0BX=0000ES=13EWCX=002ESP=000BSG=13C0 CG=i3Cl 1P=0H

12、08HUL BhBP=0000 S: I =0006 DI =0300NU UP El PL NZ NA P0 NC内容。(3) G-执行根据反汇编的情况,G断点常设置在正常返回 DOS调用之前,即 MOVG 001AAM =361 BX=0000DSlinr ES=13B013Cl:001ft B44CCK=G02E DX =0G40 SF=00S0SI胡000 DI=0000辭1 ”阿 備=13 Cl _ IF門019NU UF El FL NE NA PE NCMOUfiH,4CAH,4CH,执行后,可以通过查看寄存器内容,或者 D命令查看内存地址单元的 内容,检查程序的运行是否正常。(

13、4)D-查看存储器内容查看数据段内容,屏幕上会给出128字节存储单元的内容,每行为顺序的16个字节。因此可以根据定义的数据段中,变量的偏移量,查看运行结果。13CB1300:904013C9:0B601363:0070003000004-C0000006 u 00 00 -IFlloo F00000 tJ200000 41C003000 8 90H _M-0D30000000-0FI00-F6A2-030 00-000 06-6000-0000-003 0 凶 _0 S3H Acu U0001;升(:一R D 0 0 0 0 A 0ffA00000 S 一 8 Rals 0 3109flfl15IMT15X口它MFaFtfjlka弓wm 4.厶J.L J(5)E-修改存储单元内容在调试程序的过程中,如果要修改变量的值,可以使用 E命令。如下图所 示,通过E命令修改了程序变量X和丫的值,而不需要修改程序,因此 E命令 为程序调试提供了方便。-E13 ca:aaaa 3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号