![汇编语言之程序调试技术_第1页](http://file4.renrendoc.com/view/2983db36662bd979ede14a7d91099f64/2983db36662bd979ede14a7d91099f641.gif)
![汇编语言之程序调试技术_第2页](http://file4.renrendoc.com/view/2983db36662bd979ede14a7d91099f64/2983db36662bd979ede14a7d91099f642.gif)
![汇编语言之程序调试技术_第3页](http://file4.renrendoc.com/view/2983db36662bd979ede14a7d91099f64/2983db36662bd979ede14a7d91099f643.gif)
![汇编语言之程序调试技术_第4页](http://file4.renrendoc.com/view/2983db36662bd979ede14a7d91099f64/2983db36662bd979ede14a7d91099f644.gif)
![汇编语言之程序调试技术_第5页](http://file4.renrendoc.com/view/2983db36662bd979ede14a7d91099f64/2983db36662bd979ede14a7d91099f645.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序调试基本技术7/11/20221程序调试我们以前学习了通过汇编程序MASM来将汇编语言源程序汇编成目标程序,使用连接程序LINK来将目标程序连接成可执行文件。而调试汇编语言程序的基本工具是DEBUG。在使用DEBUG调试程序时,能使程序员触及计算机内部,能观察并修改寄存器和存储单元的内容,能够监视程序的执行情况。所有DEBUG命令为单一字母,其后跟着一个或多个参数。命令中的参数之间必须用分界符号(空格或逗号)隔开。每个名字以回车键作为结束符。在DEBUG命令中,使用逻辑地址的格式是: 段基值:偏移量。其中段基值可以用段寄存器名表示,也可以用十六进制数。在DEBUG状态下,命令参数中的数据和
2、机器显示的数据均是十六进制数,且不以“H”结尾。7/11/20222程序调试一、DEBUG的进入和退出在命令行状态宏汇编程序的当前目录下,输入DEBUG然后回车,就能进入DEBUG状态了,此时出现提示符“-”,调试人员就可以使用DEBUG的各命令了。首先应该装入待调试的可执行文件。方法是在提示符“-”后面输入N 可执行文件名,然后回车,可执行文件名必须包含扩展名。也可以在调用DEBUG的同时转让可执行文件,方法是,在命令行状态宏汇编程序的当前目录下,输入DEBUG 可执行文件名,然后回车。当完成可执行文件转入后,程序的目标代码、数据已全部装入内存指定单元。7/11/20223程序调试程序装入内
3、存后,CPU各寄存器内容处于初始状态:CS: 程序开始运行的段基值IP: 第一条要执行的指令的偏移量SS:段定义语句中组合类型指定为堆栈段的段基值SP:栈底2单元的偏移量DS、ES:程序段前缀(PSP)的段基值标志寄存器:各标志位均为0状态DEBUG状态的退出: 在提示符“-”后面输入Q,然后回车,就能退出调试状态。7/11/20224程序调试二、显示命令1、显示内存单元内容:D命令命令格式:D 地址 或 D 范围例如:-D DS:100;从(DS)+100H开始显示80H个字单元的内容-D 100 ; 用上次使用的段寄存器从偏移量为100H开始显示80H个字单元内容-D DS:100 110
4、;显示DS数据段中偏移量从100H开始到110H结束的字单元内容 在屏幕上显示的结果内容分为3部分:左边是每一行存储单元的起始地址(段基值:偏移量),中间是各字节单元两位十六进制数内容显示,右边是把中间各字节单元用相应的ASCII码字符表示,若为不可显示字符,便用”.”表示。7/11/20225程序调试2、显示寄存器命令R命令命令格式:-R 输入R然后回车,在屏幕上将会显示各寄存器的内容。如下图所示:在第二行后半段显示标志寄存器的各标志位状态。各标志位的复位和置位状态用字符表示(显示字符见P209表11.1)。第三行表示现在CS:IP指向的一条指令,也就是下一条即将执行的指令。7/11/202
5、26程序调试3、显示源程序指令(反汇编):U命令在DEBUG状态下运行程序是执行内存区域内的目标代码,如果要知道执行的是什么指令,操作数在哪里,就需要把目标代码还原成源程序中的汇编指令。这就是所谓的反汇编。U命令就是把目标代码反汇编成源程序中的汇编指令。命令格式: U 地址 (从指定地址开始显示32个字节目标代码) 或U 范围(指定起始地址和结束地址或者指定起始地址和长度)如: U CS:12 或 U CS:12 28 或U CS:12 L16都表示显示从CS:12开始32个字节目标代码的汇编指令。7/11/20227程序调试三、修改命令1、修改内存单元内容E命令E命令有两种格式:(1)用内容
6、表修改内存单元格式: E 地址 内容表内容表为内存单元的新数据,各字节单元的数据以空格分开。例如 E DS:0 56 ABC 23表示将以DS:0为起始地址的连续5个字节单元中依次存放数据56H,字符A,B,C的ASCII码和数据23H。7/11/20228程序调试(2)逐个内存单元修改命令格式:-E 地址键入上述命令后,屏幕上显示出命令指定的单元地址及其内容。这时可输入新的两位十六进制数,以代替原来的内容。修改完此存储单元数据后可进行下面3种操作:键入空格:屏幕上显示下一个高字节单元的内容,并等待输入新数据,如果再键入空格则显示更高一个字节的内容,可以从低字节到高字节修改存储单元内容。键入连
7、接号“”:屏幕显示上一个低字节单元内容,并等待输入新数据,可从高字节到低字节修改。键入回车:结束这次内存修改。如果前两种操作未输入新数据就回车,则此单元数据未做修改。7/11/20229程序调试2、修改寄存器内容命令格式: R 寄存器名键入上述命令后,屏幕上立即显示寄存器名及其内容,然后等待输入新的最多4位16进制数。如内容无需修改则直接回车。修改标志寄存器时,输入命令RF,屏幕上显示标志寄存器各标志位对应的字符(P209表11.1),用户可以在后面输入修改的字符。8个标志位可以任意选择修改其中的一个或几个,且修改的顺序也是任意的。输入各标志显示字符之间可以是无间隔的,输入完后按回车即可完成修
8、改。7/11/202210程序调试3、汇编指令A命令A命令主要用于小段程序的汇编,或对目标程序的修改。用A命令汇编或修改指令的目标代码之间存入指定的存储单元中。命令格式:A 地址在键入A命令后,屏幕上显示存放指令目标代码的起始单元地址,并等待输入一条汇编指令。可输入指令系统中任一指令。当指令中需要说明存储单元是字或字节单元是,可用WO(即WORD PTR)或BY(即BYTE PTR)来表示操作数的类型。可以用DB或DW伪指令直接将字数据或字节数据存入相应单元中,如同源程序中一样,可以输入数,也可以输入字符串。7/11/202211程序调试使用A命令时,不允许使用标号、变量名以及除DB、DW以外
9、的伪指令。输入一条指令的末尾以回车键结束。如果没有输入指令就直接回车,表示A命令的结束。如:7/11/202212程序调试四、程序运行1、连续运行方式G命令命令格式: G =地址,地址,地址,其中第一个参数“=地址”是运行程序的起始地址,后面的参数是断点地址。由于指令地址以CS为段基值,所以地址参数仅包含偏移量。若没有指令起始地址,就以CS和IP现有内容为起始地址。第一个参数中的“”是必不可少的,如果没有等号就会被当成断点地址。断点地址一定是一条指令的首字节地址,它只包含偏移量(各指令的首字节地址,可通过反汇编U命令显示)。7/11/202213程序调试一条G命令的断点地址最多为10个。断点的
10、顺序是任意的,无需按照地址顺序排列。断点地址参数仅对本次G命令有效,若再次使用G命令则需要重新指定断点地址参数。如果G命令带有断点地址参数,当程序运行到任一断点时,便立即停下来,并显示CPU个寄存器的内容和下一次要执行的指令。若G命令没有断点地址参数,那么程序就运行至结束,并显示“Program terminated normally”。7/11/202214程序调试2、跟踪运行方式T命令命令格式:T =地址,值其中, =地址为程序的运行起始地址,如果命令中未指定,就以CS和IP现有内容作为起始地址。值是程序运行的指令条数,如果命令中未指定,则默认为1条,即仅执行一条指令。执行T指令后,每执行
11、完一条指令后,就自动显示CPU各寄存器和标志寄存器内容,待T命令指定的指令条数执行完后暂停程序的运行。7/11/202215程序调试五、调试程序的过程:在用户程序经过编辑、汇编、连接后得到一个可执行文件后就需要借助于调试程序DEBUG来对程序进行调试,查看程序是否完成了预定功能。使用DEBUG的步骤:1、调用DEBUG,装入用户程序2、观察寄存器初始状态3、以单步工作方式运行程序:首先用T命令顺序执行用户程序的前几条指令,直到段寄存器DS、ES已预置为用户的数据段、附加段。4、观察用户程序数据段初始内容:在DS、ES已预置为用户的数据段、附加段后就可以用D命令查看初始数据。7/11/202216程序调试5、继续以单步工作方式运行程序,遇到软中断指令INT则用G命令跳过,这种中断处理子程序通常很长。6、连续工作方式运行:在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年血液透析机(人工肾)合作协议书
- 2025年基因工程乙型肝炎疫苗(酵母)合作协议书
- 2024-2025学年河南省郑州市管城区四年级(上)期末数学试卷
- 2025年排气系统管件合作协议书
- 人教版期中测试卷-四年级数学下册(培优卷)(含解析)
- 2025年九年级教研组年终总结样本(3篇)
- 2025年乳胶漆粉刷施工合同协议(2篇)
- 2025年产品买卖合同范文(2篇)
- 2025年二手房分期购房合同(三篇)
- 2025年个人车位租赁合同参考模板(三篇)
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 《社区康复》课件-第六章 骨关节疾病、损伤患者的社区康复实践
- 南通市2024届高三第二次调研测试(二模)地理试卷(含官方答案)
- 中外历史纲要上大事年表
- 高标准农田建设项目监理计划
- 2024年湖南省公务员考试行政职业能力测验真题
- 攀岩运动之绳结技巧课程
- 防打架殴斗安全教育课件
- 小学二年级(上册)-乘法口诀-练习题-A4直接打印
- 采购行业的swot分析
- 石家庄长安区幼儿园信息统计表
评论
0/150
提交评论