资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
动态调试程序DEBUG 使用在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调 试,调试程序DEBUG 就是专为汇编语言设计的一种调试工具。它在调试汇编语言程序时 有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元内容, 并能监视目标程序的执行情况,使用户真正接触到CPU 内部,与计算机产生最紧密的工作 联系。1动态和程序动态和程序DEBUG 的主要特点的主要特点 1)能够在最小环境下运行汇编程序 在DOS 状态下运行汇编程序,必须将程序经过MASM 汇编程序,而后还要经过LINK连接 程序产生可执行程序,才能最终运行,比较麻烦。在DEBUG 状态下,为用户提供了调试、 控制测试的环境,可以在此环境下进行编程、调试、监督、执行用户编写的汇编程序。因 此调试周期短,为用户提供了极大的方便。 2)提供极简单的修改手段 DEBUG 提供了修改命令,可以修改内存单元内容,修改寄存器的内容,为调试程序、修 改程序带来了方便。 3)提供用户与计算机内部联系的窗口 DEBUG 具有显示命令,它既可以使用户看到某内存单元或某一块单元内容,也可以看到 CPU 内部各寄存器的内容。用单步执行命令实现跟踪执行,每执行一步都使用户看到各寄 存器的内容的变化,以便分析和调整程序。 4)可装入、修改或显示任何文件 当然在DEBUG 状态下运行汇编程序也具有一定局限性。在DEBUG 状态下运行的程序不 能使用宏汇编程序中的宏指令,大部分伪指令也不能使用,因此只能把程序分段调试。此 外,不能调试太长的程序,只能分块进行中程序设计。在DEBUG 状态下调试好的程序不 能形成可执行文件(.EXE),因此调试好的程序只能记下,到编辑环境下重新键入调试好 的程序,通过汇编程序(如MASM),再通过连接程序(LINK)形成可执行文件 (.EXE)。 2DEBUG 的进入的进入 在操作系统(DOS)状态下,直接调入DEBUG 程序,键入命令的格式如下: DDEBUG d:Pathfilename.extParm1Parm2 其中的内容为可选项,可以有也可以缺省。 d:为驱动器号,指要调入DEBUG 状态的可执行文件在哪个驱动器中,如A:、B:、C:等。 Path为路径,指要调入DEBUG 状态的可执行文件是在哪个目录下或子目录下。 filename.ext,指要调入DEBUG 状态下的可执行文件的文件名,该文件可以是通过编辑、 汇编、连接后产生的可执行文件,也可以是在DEBUG 状态下汇编的程序 段,通过写盘命 令W 写入磁盘的文件。 Parm1Parm2为任选参数,是给定文件的说明参数。 在启动DEBUG 时,如果输入filename(文件名),则DEBUG 程序把指定文件装入内存, 用户可以通过DEBUG 的命令对指定文件进行修改、显示或执行。如果没有文件名,则是 以当前内存的内容工作,或者用命名命令或装入命令把需要的文件装入内存,然后再通过 DEBUG 命令进行修改、显示或执行。 当启动DEBUG 程序后,屏幕上出现“”,说明系统已进入DEBUG 状态。 3DEBUG 的主要命令的主要命令1)DEBUG 命令的有关规定 (1)DEBUG 命令都是一个英文字母,后面跟着一个或多个有关参数。多个操作参数之间 用“,”或空格隔开。 (2)DEBUG 命令必须接着按ENTER 键,命令才有效。 (3)参数中不论是地址还是数据,均用十六进制数表示,但十六进制数据后面不要用“H”。 (4)可以用Ctrl 和Break 键来停止一个命令的执行,返回到DEBUG 的提示符“”下。 (5)用CtrlNum Lock 键中止正在上卷的输出行,再通过按任意键继续输出信息。 2)DEBUG 命令 (1)汇编命令A 格式:a. A 段寄存器名:偏移地址 b. A 段地址:偏移地址 c. A 偏移地址 d. A 功能:用该命令可以将汇编语言程序直接汇编进入内存。 当键入A 命令后,显示段地址和偏移地址等待用户键入汇编指令,每键入一条汇编指令回 车后,自动显示下一条指令的段地址和偏移地址,再键入下一条汇编指令,直到汇编语言 程序全部键入,又显示下一地址时可直接键入回车返回到提示符“”为止。其中a 的段 地址在段地址寄存器中,因此在使用该命令时必须将段地址寄存器送入段地址,c 的地址 在CS 中,d 的段地址在CS 中,偏移地址为100H。 (2)显示内存命令D 格式:a. D 地址 b. D 地址范围 c. D 功能:显示指定内存范围的内容。 显示的内容为两种形式:一种为十六进制内容,一种为与十六进制相对应的ASCII 码字符, 对不可见字符以“”代替。对于a、c 每次显示128 个字节内容,b 显示的字节数由地址 范围来决定。若命令中有地址,则显示的内容从指定地址开始,若中中无地址(如c)则从 上一个D命令所显示的最后一个单元的下一个单元开始。若以前没有使用过D 命令,则以 DEBUG初始化的段寄存器的内容为起始段地址,起始偏移地址为100H,即CS:100。对于a 中的地址为偏移地址,段地址为CS 的内容,对b 中的地址范围,可以指定段地址和起始 偏移地址和终止偏移地址。 (3)修改存储单元内容命令 E 格式:a E 地址 内容表b E 地址 功能:a用命令所给定的内容表去代替指定地址范围的内存单元内容。b一个单元一个单元地连续修改单元内容。其中:内容表为一个十六进制数,也可以是用 单引号括起的一串字符。 (4)填充内存命令 F 格式:F 范围单元内容表 功能:将单元内容表中的内容重复装入内存的指定范围内。 (5)内存搬家命令 M 格式:M 源地址范围目标起始地址 其中源地址范围和目的起始地址为偏移地址,段地址为DS 的内容。功能:把源地址范围的内容搬至以目标起始地址开始的存储单元中。 (6)比较命令 C 格式:C 源地址范围,目标地址 其中源地址范围是由起始地址和终止地址指出的一片连续的存储单元,目标地址为与源地 址所指单元对比的目标地址起始地址。 功能:从源地址范围是由起始的地址单元开始逐个与目标起始地址往后的单元顺序比较每 个单元内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,如果不一致, 则以源地址源内容目的内容目的地址的形式显示失败单元地址及内容。 (7)搜索指定内容命令 S 格式:S 地址范围表 功能:在指定地址范围内搜索表中内容,搜索到就显示表中元素所在地址。 (8)检查和修改寄存器内容命令 R 格式:aRbR 寄存器名 功能:a显示CPU 内部所有寄存器的内容和全部标志位的状态。b显示和修改一个指定寄定器的内容和标志位的状态。 其中对状态标志寄存器FLAG 以位的形式显示。 (9)跟踪与显示命令 T 格式:aT地址或 T 地址bT地址条数或 T 地址条数 功能:a执行一条指定地址处的指令,停下来,显示CPU 所有寄存器内容和全部标志位 的状态,以及下一条指令的地址和内容。b为多条跟踪命令,从指定地址开始;若命令中用地址给定了起始地址,则从起始地址 开始,若未给定,则从当前地址(CS:IP)开始,执行命令中的条数决定一共跟踪几条指 令后返回DEBUG 状态。 (10)反汇编命令 U 格式:a U 地址b U 地址范围 功能:将指定范围内的代码以汇编 语言形式显示,同时显示该代码位于内存的地址和 机器。 若在命令中没有指定地址则以上一个U命令的最后一条指令地址的下一个单元作为起始地 址;若没有输入过U 命令,则以DEBUG 初始化段寄存器的值作为段地址,以0100H作为 偏移地址。 (11)命名命令 N 格式: N 文件名 功能:在调用DEBUG 时,没有文件名,则需要用N 命令将要调用的文件名格式化到 CS:5CH 的文件控制块中,才能用L 命令把它调入内存进行调试(其它形式参考DOS 手册) 。 (12)读盘命令L 格式:aL 地址驱动器号起始扇区号所读扇区个数bL 地址 cL 功能:a把指定驱动器和指定扇区范围的内容读到内存的指定区域中。其中地址是读入内 存的起始地址,当输入时没有给定地址,则隐含地址为CS:100H。起始扇区号指逻辑扇区号的起始位置。所读扇区个数是指从起始扇区号开始读到内存几个扇区的内容。驱动器号 为0 或1,0 表示A 盘,1 表示B 盘。b读入已在CS:5CH 中格式化的文件控制块所指定的文件。在使用该命令前用N 命令命 名即可将要读入的文件名格式化到CS:5CH 的文件控制块中,其中地址为内存地址。c同b地址隐含在CS:100H 中。 当读入的文件有扩展名.COM 或.EXE,则始终装入CS:100H 中,命令中指定了地址也没用。其中BX 和CX 中存放所读文件的字节数。 (13)写盘命令 W 格式:aW地址驱动器号起始扇区号所写扇区个数bW地址 cW 功能:a 把在DEBUGU 状态下调试的程序或数据写入指定的驱动器中,起始扇区号,所写 扇区个数为要占盘中几个扇区。 写盘指定扇区的操作应十分小心,如有差错将会破坏盘上的原有内容。 如果在命令行中的地址只包含偏移地址,W 命令认为段地址在CS 中。b当键入不带参数的写盘命令时,(或只键入地址参数的写盘命令),写盘命令把文件写到 软盘上。该文件在用W 命令之前用命名命令N 将文件格式化在CS:5CH 的文件控制块 中。c只有W 命令以前而没有任何参数时,与N 配合使用进行写盘操作。 在用W 命令以前在BX 和CX 中应写入文件的字节数。 (15)输出命令 O 格式:O端口地址 字节值 功能:向指定端口地址输出一个字节。 (16)运行命令 G 格式:G 地址地址地址 功能:执行用户正在调试的程序。 其中地址为执行的起始地址,以CS 中内容作为段地址,以等号后面的地址为偏移地址。 再后面的地址为断点地址。在命令行中只有起始地址,没有断点地址,则程序在执行时不 中断。DEBUG 规定最多设置10 个断点地址。设置多个断点用于调试较大的程序,即程序 中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点 处停下来,以便调整程序。 断点地址为程序中断处的偏移地址,段地址在CS 中。 当执行在DEBUG 状态下汇编的小段程序时,只用G 命令即可。 (17)十六进制运算命令 H 格式: H 数据1 数据2 其中数据1 和数据2 为十六进制数据。 功能:将两个十六进制数进行相加、减,结果显示在屏幕上。 (18)结束DEBUG 返回到DOS 命令Q 格式:Q 功能:程序调试完退出DEBUG 状态,返回到DOS 状态下。 Q 命令不能把内存的文件存盘,要想存盘必须在退出DEBUG 之前用W 命令写盘。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号