debug命令使用祥解

上传人:小** 文档编号:45460180 上传时间:2018-06-16 格式:DOC 页数:10 大小:29.04KB
返回 下载 相关 举报
debug命令使用祥解_第1页
第1页 / 共10页
debug命令使用祥解_第2页
第2页 / 共10页
debug命令使用祥解_第3页
第3页 / 共10页
debug命令使用祥解_第4页
第4页 / 共10页
debug命令使用祥解_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《debug命令使用祥解》由会员分享,可在线阅读,更多相关《debug命令使用祥解(10页珍藏版)》请在金锄头文库上搜索。

1、debug 命令使用祥解命令使用祥解 前段时间我在学习汇编语言,发现这语言不是太难学,他里面的算法思想和高级语言都是一样的,我在学这个之前学过 c+ ,所以我才这样说的,学习一门语言固然重要,但是学会使用你所用的平台去调试也很重要,下面这个实验是我们现在正在上的接口原理实验,debug 命令使用都是我们教员自己总结的,感觉很好,所以就发过来供大家分享。实验 1 DEBUG 调试命令练习一、实验目的1、熟悉 DEBUG 调试程序的常用命令;2、掌握利用 DEBUG 命令查看和修改 CPU 中寄存器及内存单元内容的方法;3、学会汇编、反汇编、运行和调试简单程序段的方法。二、实验内容和步骤1、Deb

2、ug 程序的启动方法 1:键入 debug 后回车只是装入 Debug 程序,并没指定要调试程序;方法 2:相继装入 Debug 程序和要调试的程序格式: 路径 debug filename屏幕上出现提示符“-”注意:filename 必须是可执行文件,要带扩展名 exe2、Debug 程序的退出在提示符“-”后输入“Q”回车即可。3、D 命令功能:显示数据段中指定单元或单元块的内容。【例 1】D1000结果显示 128(80H)个字节的内容,一行 16 个字节,共 8 行。其中每一行的第一列是数据段段寄存器 DS 的当前值,第二列是每一行的第一个字节在段中的偏移量,中间是 16 个单元的内容

3、(十六进制) ,单元地址依次加 1。最右边是该单元内容(十六进制形式的 ASCII 码)所对应的字符。【例 2】D DS:1000结果显示和上例相同,因此在没有定义具体的数据段时,可以省略 DS。【例 3】D 1234:1000结果显示数据段中以 1234H 为段地址、偏移量从 1000H 开始的 128 个单元的内容。该例定义了显示范围,显示结果的段地址不一定是段寄存器 DS 中的当前内容,而是一个指定的段地址。【例 4】D 1234:1000 100F结果显示数据段中以 1234H 为段地址、偏移量从 1000H 开始到 100FH 结束的 16 个单元的内容。该例不仅定义了具体的段地址,

4、而且定义了显示的起始和结束地址,不一定显示 128 个字节。4、E 命令功能:修改内存单元内容【例 1】E 1000该命令的功能是从 DS:1000H 处修改若干个数据。响应如下:1BD3:1000 CD. 这里 1BD3H 是 DS 的当前值(每台计算机内容可能不一样) ,CDH 是偏移量为 1000H 单元的原来内容。输入一个新的数据后,如果按空格键,将显示(修改)相邻高地址 1001H 单元的内容,输入新数据后再按空格键,将显示(修改)相邻高地址 1002H 单元的内容,以此类推。如果输入新的数据后回车,将不再提示修改后面的单元内容。【例 2】E DS:1000功能和上例相同【例 3】E

5、 1234:1000功能是修改数据段中以 1234H 为段地址、偏移量从 1000H 开始的单元内容。5、命令 U功能:从代码段中指定的位置对机器代码进行反汇编,得到相应的助记符形式的指令。【例 1】U 1000功能是从代码段中以 CS 寄存器的值为段地址,偏移量为 1000H 开始的地方执行反汇编,一次反汇编 32 个字节的机器代码。【例 2】U若地址省略,如果是第一次使用 U 命令,则从 CS、IP 的当前地址处开始反汇编。如果不是第一次使用,则从上一个 U 命令的最后一条指令的下一单元开始反汇编 32 个字节。【例 3】U CS:1000同上例【例 4】U 1234:1000从指定的 C

6、S、IP 地址开始反汇编【例 5】U 1234:1000 L9从指定的 CS、IP 地址开始反汇编,长度不是 32 个字节,而是 9 个字节。6、寄存器的显示和修改命令 R【例 1】R如果 R 后面什么都不带,这时 R 命令就用来显示所有寄存器内容,包括标志寄存器中的 8 个状态标志位的状态,并在最后提示下一条将要执行的指令。【例 2】RAX如果 R 后面跟上一个寄存器的名称,这时 R 命令就用来显示这个寄存器的内容并等待修改。如 RAX,系统将响应显示出 AX 的内容并在下一行显示出冒号。如果在冒号后键入进值后回车,AX 即修改为新值;如果不输入新值而直接回车,则不改变原值。【例 3】RF功

7、能是显示和修改标志位状态。注意 8 位状态标志位不是以 0 或 l 的形式显示的,而是用两个字母显示的,这样更直观。字母和状态对应关系如下表所示:标志名 置位 复位溢出 Overflow(是/否) OV NV方向 Direction(减量/增量) DN UP中断 Interrupt(允许/屏蔽) EI DI符号 Sign(负/正) NG PL零 Zero(是/否) ZR NZ辅助进位 Auxiliary Carry(是/否) AC NA奇偶 Parity(偶/奇) PE PO进位 Carry(是/否) CY NC系统响应显示当前 8 个状态标志位的状态,如果直接回车,将不改变标志位的状态。也可

8、以键入其中一个或多个新的状态符,重新设置其状态。键入时可以不考虑标志位的顺序,中间也可以不加空格。7、运行命令 G【例 1】G=1000 1023功能是从代码段 1000H 处开始运行程序,到 1023H 处停止程序执行。【例 2】G=1000此处没给出结束地址,则系统会自动在程序应该停止的地方结束。因此在我们编写的汇编语言源程序中,就需要一个程序结束返回到操作系统的指令。【例 3】G如 G 后不带任何参数,则从当前指令即从 CS:IP 指定的地址开始执行,并一直执行到该停止的地方结束。因为今天是练习 DEBUG 命令,并没有涉及到具体的程序,所以最好不要使用不带结束地址的G 命令,否则会可能

9、因为内存中没有程序结束相关指令而导致死机。8、单步执行命令 T【例 1】T=1000 3功能是从代码段偏移量为 1000H 的地方开始执行 3 条指令后停下来,并在执行每条指令后显示寄存器的当前内容、状态值和下一条将要执行的指令,IP 值自动加 1。【例 2】T=1000当后面的步数省略时,则从指定地址默认执行 1 条指令后停下来,并在执行该指令后显示寄存器的当前内容、状态值和下一条将要执行的指令,IP 值自动加 1。【例 3】T功能是从 CS、IP 的当前值开始执行 1 条指令后停下来,IP 值自动加 1。另外,DEBUG 还有如小汇编命令 A、命名命令 N、装入命令 L、写命令 W 等很多

10、命令,这里不再讲述。实验 2 编辑、汇编、连接、调试简单程序练习一、实验目的1、熟悉编辑汇编源程序的方法;2、掌握汇编程序 Masm 和链接程序 Link 的使用方法;3、进一步掌握用 Debug 调试具体程序、观察参数和运行结果的方法。二、实验内容与步骤1、输入和编辑汇编源程序进入 E 编辑程序所在目录,假设该程序同 Debug 程序一样,也在 D 盘的 ASM 目录中。D:ASM EDIT LX1.ASM如 EDIT 后面可以不带文件名,这样它会新建一个文件,此时可以用菜单打开一个文件,或者编辑完毕保存时要提供文件名。如 EDIT 后面带一个文件名,它将会打开这个文件。如果这个文件不存在,

11、它就以这个文件名建立一个文件。显然这样更方便。进入编辑环境后输入以下程序:DATA SEGMENTMSG DB This is an example.$DATA ENDSSTACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AX ;获得数据段的可寻址性MOV DX,OFFSET MSGMOV AH,09H INT 21H ;显示字符串MOV AH,4CHINT 21H ;程序结束,返回操作系统CODE ENDSEND START输入完

12、毕后,存盘退出。注意:也可以使用别的编辑软件(如记事本) ,保存时一定要以 ASM 为扩展名。使用记事本时,第一次保存时使用的扩展名为 txt。存盘的时候要与 Masm 和 Link 程序保存在同一个文件夹下(假设都在 D:ASM 文件夹下) 。2、用汇编程序 MASM 对源程序进行汇编进入 Masm.exe 汇编程序所在目录,比如该程序也在 D 盘的 ASM 中。D:ASM MASM LX1LX1 后面可以不跟扩展名 ASM(汇编时默认是对 ASM 进行汇编) 。系统响应如下(汇编程序版本不同,响应不太一样):Microsoft (R) Macro Assembler Version 5.0

13、0 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename LX1.OBJ: ;生成的目标文件名默认为 LX1.OBJ,回车键确认Source listing NUL.LST: LX1;输入列表文件名,如不需要可直接回车 Cross-reference NUL.CRF: ;输入交叉索引文件名,如不需要可直接回车50502 + 385338 Bytes symbol space free0 Warning Errors0 Severe Errors如编译通过,这时 D 盘的 ASM 中将会

14、生成一个 LX1.OBJ 文件。如果编译时发现存在语法错误,系统将给出错误提示(警告性错误和致命性错误) 。警告性错误并不影响 OBJ 文件的产生,如有致命性错误不可能生成对应的 OBJ 文件,这时必须再对程序进行修改、再汇编,直到没有错误为止。如果在文件名 LX1 后跟上一个分号,上述提示将省略。3、用链接程序 LINK 产生可执行文件进入 Link.exe 汇编程序所在目录,比如该程序也同样在 D 盘的 ASM 中。D:ASM LINK LX1后面可也以不跟后缀名.OBJ。系统响应如下:Microsoft (R) Segmented-Executable Linker Version 5.

15、13Copyright (C) Microsoft Corp 1984-1991. All rights reserved.Run File LX1.exe: ;生成的可执行文件名默认为 LX1.EXE,按回车键确认List File NUL.MAP: ;输入映象文件名, 如不需要可直接回车Libraries .LIB: ;输入库文件名, 如不需要可直接回车 如果链接成功,这时 D 盘的 ASM 中将会生成一个 LX1.EXE 文件。同样,如果在文件名后跟上一个分号,上述提示也将省略。4、执行程序因该程序的执行结果是在屏幕上输出一个字符串,可以直接运行程序,通过观察屏幕上是否正确输出该字符串来判断程序是否正确。D:ASM LX1屏幕将会显示:This is an example.5、用 DEBUG 调试.EXE 文件注意:如果程序的执行结果并没有在屏幕上显示,这时不能直接运行程序,只能通过在 DEBUG中对它进行调试,通过观察相关内存单元的内容来判断程序是否正确。进入 D 汇编程序所在目录,比如该程序也在 D 盘的 ASM 中:D:ASM DEBUG LX1.EXE ;扩展名必须带上1)反汇编U 1C03:0000

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

当前位置:首页 > 商业/管理/HR > 经营企划

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