实习一 调试工具的使用方法训练_第1页
实习一 调试工具的使用方法训练_第2页
实习一 调试工具的使用方法训练_第3页
实习一 调试工具的使用方法训练_第4页
实习一 调试工具的使用方法训练_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实习一 调试工具的使用方法训练1实验目的掌握调试工具DEBUG的使用方法,理解汇编指令、存储单元和寄存器等有关概念,能够对简单的汇编语言程序进行调试。2实验内容(1)学习调试工具DEBUG的使用方法,熟悉DEBUG常用命令的功能和用法。(2)利用DEBUG调试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、存储单元地址与内容的概念和作用、以及程序的执行过程。3实验要求(1)掌握DEBUG的常用命令和基本的程序调试方法(2)熟悉和掌握指令系统常用指令的功能和用法,能熟练运用DEBUG调试工具调试简单的程序,并初步掌握使用DOS系统功能调用的方法。4重点与难点存储器和寄存器的概念、各寄存器的

2、用途、常用指令的功能和用法、用DEBUG调试程序的方法。5实验结果验收熟练运用DEBUG调试工具完成实习要求的程序设计和调试6实验指导6.1 调试工具DEBUG简介DEBUG是DOS操作系统为汇编语言程序设计者和系统管理员提供的一个通用调试工具,利用DEBUG可以读写、传送、比较、查找和显示存储器单元内容,设置程序起始执行地址或断点,执行程序或分段执行程序,跟踪程序执行,显示处理器状态,汇编或反汇编程序等。用DEBUG编程简单、方便和直观,可以直接查看程序执行情况,便于熟悉和理解指令,掌握基本编程技巧。DEBUG只使用十六进制表示数据(十六进制数后不加“H”),屏幕的显示数据形式如下:1400

3、:0100 24 65 6E 64 73 0D 0A 20-20 63 6F 64 65 20 20 24 *ends.code *1400:0110 73 65 67 6D 65 6E 74 0D-0A 20 20 20 20 20 20 24 segment. *1400:0170 24 61 78 2c 30 0D 0A 09-20 20 20 20 70 75 73 68 *ax,0 push屏幕每行显示内容分为三部分,一行共显示十六个字节单元的内容。第一部分是本行所显示的16个字节数据在存储器中的起始存放地址;第二部分是以十六进制显示的16个字节数据;第三部分是将本行所显示字节数据看

4、作ASCII码时显示的字符,若某字节数据对应不可显示的ASCII码,则显示一个“.”字符代替该字节数据的显示字符。DEBUG只有十几条单字母命令,功能强且易掌握,常用DEBUG命令如下:1)DEBUG的进入和退出进入DEBUG时,如果要同时装入某程序,键入下面的命令:H:> DEBUG <文件名> <参数>H:> DEBUG -“-”是DEBUG的命令提示符,表明已进入DEBUG状态。在“-”提示符之后,可以键入DEBUG命令。退出DEBUG时,键入如下命令从DEBUG状态返回DOS:-Q 2)汇编与反汇编命令汇编命令A和反汇编命令U是常使用的DEBUG命令

5、。 汇编命令A格式:A <起始地址>功能:逐行汇编程序,主要用于小段程序的汇编。说明:使用A命令汇编程序,不允许程序中出现标号和伪指令,但MS-DOS的DEBUG允许使用DB和DW这两条伪指令。如果未给出起始地址,汇编后的程序代码从指令指针寄存器IP的值指定的地址开始存放。按两次回车键可退出汇编命令A的状态。例1-1 汇编一段程序,该程序的功能是在屏幕上输出一个大写字母A。-A 1001141:0100 MOV DL,411141:0102 MOV AH,021141:0104 INT 211141:0106 INT 20 反汇编命令U格式:U <地址范围>功能:在指定

6、的地址范围内,将二进制机器指令逐条翻译为汇编语言符号指令。例1-2 将例1-1中汇编的程序进行反汇编-U 100 1071141:0100 B241 MOV DL,411141:0102 B402 MOV AH,021141:0104 CD21 INT 211141:0106 CD20 INT 203)执行程序命令在DEBUG下,可以完整地执行程序、分段执行程序或单步执行程序。 执行程序命令G格式:G =<程序起始地址> <断点>功能:完整地或分段执行程序。说明:G命令可以从头至尾完整地执行程序,如果G命令带有有断点参数,则执行到断点地址时暂停并显示当前各寄存器状态,断

7、点最多允许设置100个。程序正常结束时显示“Program terminated normally”。例1-3 执行例1-1中汇编的程序。-G =100 AProgram terminated normally 跟踪执行命令P和T格式:P =<地址> <跟踪条数>T =<地址> <跟踪条数>功能:跟踪命令P和T可以逐条跟踪指令的执行,以便调试程序。说明:每条指令执行后都将显示各寄存器的当前值。P命令与T命令的差别是,P命令按程序书写的指令为单位,一次跟踪完一条书写指令(执行一组相关的指令),而T命令按存储单元中存放的指令为单位,一次跟踪一条指令的

8、执行。例1-4 用P命令跟踪例1-1中的程序。设程序执行前的各寄存器初值如下,然后开始用P命令跟踪例1-1程序:AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1141 ES=1141 SS=1141 CS=1141 IP=0100 NV UP EI PL NZ NA PO NC1141:0100 B241 MOV DL,41-P =100AX=0000 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=1141 ES=1141 SS=1141

9、CS=1141 IP=0102 NV UP EI PL NZ NA PO NC1141:0102 B402 MOV AH,02-PAX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=1141 ES=1141 SS=1141 CS=1141 IP=0104 NV UP EI PL NZ NA PO NC1141:0104 CD21 INT 21-PAAX=0241 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=1141 ES=1141 SS=114

10、1 CS=1141 IP=0106 NV UP EI PL NZ NA PO NC1141:0106 CD20 INT 20-PProgram terminated normally用P命令只需跟踪执行4次,程序就执行完毕。如果用T命令逐条指令跟踪执行,则将跟踪进入DOS功能调用的软中断服务程序中。4)显示寄存器命令R格式:R <寄存器>功能:显示或修改寄存器内容。说明:当R命令后面不指定寄存器时,显示所有寄存器的内容。例1-5 显示所有寄存器内容-RAX=0100 XB=0000 CX=2000 DX=00000 SP=FFEE BP=0000 SI=0000 DI=0000DS

11、=07E1 ES=07E1 SS=07E1 CS=07E1 IP=0114 NV UP DI PL NZ NA PO NC例1-6 修改寄存器内容要修改某寄存器内容,可在R命令后键入寄存器名,DEBUG将显示出这个寄存器的值,然后键入新值就可修改该寄存器内容。例如修改AX寄存器的内容:-R AX AX 4500:3000用RF命令可显示和修改标志寄存器FR中的标志位,无论修改哪一位标志位,只需要键入该标志位的表示符号(各标志位的符号表示如表1.1所示),并且标志位值的键入顺序可任意。例1-7 修改FR寄存器的零标志位和进位标志位。-RF NV UP EI PL ZR NA PE CY - NZ

12、 NC (修改零标志和进位标志)-RF NV UP EI PL NZ NA PE NC - (显示修改结果)表1.1 标志寄存器各标志位符号及意义标 志 位符号表示=1=0OF溢出(是/否)OVNVDF方向(减/增)DNUPIF中断(开/关)EIDISF符号(负/正)NGPLZF零(是/否)ZRNZAF辅助进位(是/否)ACNAPF奇偶(偶/奇)PEPOCF进位(是/否)CYNC5)存储器单元访问命令 显示存储器单元命令D格式:D <地址范围>功能:显示指定地址范围内的存储区数据,包括十六进制数据形式及其对应的ASCII码字符显示。例1-8 显示110H到116H存储器单元的内容。

13、-D 110 116 1540:0110 73 65 67 6D 65 6E 74 segment 写存储器单元命令E格式:E <地址> <字符串>功能:逐个修改指定单元内容或将字节串写入指定的一组连续单元。例1-9 将字节串string写入以142H为起始地址的存储器区。-E 142 string 表1.2 DEBUG命令表命令及其功能格 式A(Assemble)汇编源程序A<地址>U(Unassemble)对二进制指令代码进行反汇编U<地址范围>T(Trace)跟踪执行程序并显示寄存器内容T=<地址><跟踪条数>P(P

14、roceed)跟踪执行一组相关的指令P=<地址><跟踪条数>D(Dump)显示存储区数据D<地址>或D<地址范围>E(Enter)修改存储区数据E<地址><字符串>F(Fill)将成组数据填入存储区F<地址范围><要填入的字节或字节串>G(Go)运行程序G=<起始地址><断点地址>R(Register显示和修改寄存器内容R<寄存器>N(Name)定义文件名N<文件名><文件名>续表命令及其功能格 式L(Load)装入文件或磁盘扇区L<

15、地址><盘符><相对扇区号><扇区数>W(Write)写文件或写磁盘扇区W<地址><盘符><相对扇区号><扇区数>M(Move)传送存储区数据块M<源地址范围><目的地址>I(Input)读/显示端口I<端口号>O(Output)输出数据到端口O<端口号><字节>H(Hexarithmetic)十六进制加减法运算H<数值><数值>C(Compare)比较存储区数据C<源地址范围><目的地址>S(Se

16、arch)检索字节或字符串S<地址范围><要检索的字节或字节串>Q(Quit)退出DEBUGQ6.2 实习题(1)下面的例子可用于调试程序的实验,并且作为几个常用DOS系统功能调用的示范。 将大写字母A转换为小写字母a-A 200MOV DL,41 ;A->DLOR DL,20 ;A->aMOV AH,2 ;功能号-> AHINT 21 ;调用DOS功能调用2号功能,显示一个字符INT 20 ;退出程序执行,返回DOS-G =200思考并尝试修改程序,实现如下功能:将大写字母B转换为小写字母b。 从键盘输入一个字符并回显 -A 220 MOV AH,1

17、 ;功能号-> AHINT 21 ;调用DOS功能调用1号功能,从键盘接收一个字符MOV DL,AL ;将接收的字符送DL,准备显示MOV AH,2 ;功能号-> AHINT 21 ;调用DOS功能调用2号功能,显示一个字符INT 20 ;退出程序执行,返回DOS-G =220 显示字符串-E 120 How do you do?$-A 100 MOV DX,120 ;待显示的字符串地址->DXMOV AH,9 ;功能号-> AHINT 21 ;调用DOS功能调用9号功能,显示一个字符串INT 20 ;退出程序执行,返回DOS-G =100 思考并尝试修改程序:如果将字符串存放在300H开始的存储区,应该怎样修改程序?(2)从BX所指的内存单元开始连续存放

温馨提示

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

评论

0/150

提交评论