230 likes | 492 Views
封面. 调试程序. 介绍. DEBUG. 调 试 程 序 D E B U G 的 使 用 DEBUG.EXE 是 DOS 提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。在 DEBUG 环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。. 调试程序 DEBUG 的使用. §1. 启动 DEBUG 程序 ①在 DOS 提示符下键入: DEBUG ↙( 表示回车 ) Debug 执行,屏幕显示提示符 “ - ” ,说明计算机 当前处于 DEBUG 的管理之下,可接受、并执行 DEBUG 命令。
E N D
封面 调试程序 介绍 DEBUG
调 试 程 序 D E B U G的 使 用 • DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。 调试程序DEBUG的使用
§1.启动DEBUG程序 • ①在DOS提示符下键入:DEBUG ↙(表示回车) • Debug执行,屏幕显示提示符“-”,说明计算机 • 当前处于DEBUG的管理之下,可接受、并执行 • DEBUG命令。 • ②在DOS提示符下键入:DEBUG [路径\]文件名↙ • DEBUG执行,并将指定文件装入内存,供调试。 • 如不指定被调试程序,DEBUG设置所有段寄存器的 • 值相同,并指向最低的、可用的段地址;SP指向本 • 段的尾部;IP指向本段的0100H单元;其它通用寄存 • 器和所有状态标志清0。 启动DEBUG程序
如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。(带入.COM程序同此)如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。(带入.COM程序同此) • 如带入的被调试程序扩展名是.EXE,则需要重新定位。DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。 演示:DEBUG的两种启动方法 启动DEBUG2
§2 DEBUG命令和参数的格式 • 1.命令格式命令字母[参数] • 字母不分大小写; • 只使用16进制数,不加H; • 分割符只在两个数值之间是必须的,命令和参数之间可有可无; • 键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行; • 如命令不符合DEBUG的规则,则提示“error”并使用“^”指示错误位置。 命令格式
2.参数格式 • ①表示地址(逻辑地址): • 段地址:偏移地址, 如D0400:2500 D10ac:0 Dds:04 Dcs:100 • 偏移地址, 如D2505 D100 ;DEBUG认为输入的是偏移地址,段地址采用默认的段寄存器,不同的命令默认不同的段寄存器,例如汇编命令默认CS,显示数据命令默认DS。 • 既不送段地址,也不送偏移地址,段地址采用默认的段寄存器,偏移地址采用当前值。 • 只送段地址,省略偏移地址,非法。 如DDS: 或 D0400: 参数格式1
②表示范围 • 开始地址 结束地址 如 D DS:0 50 D2AC0:100 200 D100 120 注意:结束地址不能带段地址 • 开始地址 L 字节长度 如 D DS:0 L 10 D100L20 参数格式2
命 令 索 引 • D命令 E命令 F命令 R命令 A命令U命令 G命令 T命令 P命令 Q命令N命令 L命令 W命令 C命令 H命令S命令 I命令 O命令 M命令 命令索引
索引 §3.DEBUG命令 1.显示命令D ① D [地址] ② D [范围] ;如不指定范围,一次显示8行×16个字节。 • -D ;默认段寄存器为DS,当前偏移地址 • -D DS:100 /-D CS:200 • -D 200:100 • -D 200;200为偏移地址,默认段寄存器DS • -D DS:100 110/ -D 100 L 10 D命令
索引 • 2.修改命令E • ① E 地址 ;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。 • ② E 地址 数据表;从指定的地址开始用数据表给定的数据修改存储单元。 • -E DS:100 F3 ‘AB’ 8D。 E命令
索引 • 3.填充命令F • F 范围 数据表; • 将数据表写入指定范围的存储单元;数据个数 • 多,忽略多出的数据,个数少,则重复使用数据表。 • -F DS:0 L5 01,02,03,04,05 • -F DS:0 L5 01 02 03 04 05(空格分隔) • -F DS:0 L5 FF ;5个字节重复使用FF • 注意和E命令的区别: E 地址 数据表 起始地址,不是范围 F命令
索引 • 4.显示修改寄存器命令R • ① R;★显示所有寄存器和标志位状态; • ★显示当前CS:IP指向的指令。 • 显示标志时使用的符号: • 标志 标志=1 标志=0 • OF OV NV • DF DN UP • IF EI DI • SF NG PL • ZF ZR NZ • AF AC NA • PF PE PO • CF CY NC • ② R 寄存器名;显示并修改指定的寄存器。 • RAX ;RIP;RF等 R命令
索引 • 5.汇编命令A • A [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始(通常是CS:100)。 • 注释:①在DEBUG下编写简单程序即使用A命令。 • ②每条指令后要按回车。 • ③不输入指令按回车,或按Ctrl+C结束汇编。 • ④支持所有8086符号硬指令,伪指令只支持 • DB、DW,不支持各类符号名。 A命令
索引 • 6.反汇编命令U • ① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。 • ② U 范围;对指定范围的单元进行反汇编。 • -U • -U100 • -U100L10 U命令
7.运行程序命令G • ① G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。 • ② G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。 • ③ G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。 • ④G=地址 断点1[,断点2,…断点10] • -G ;从CS:IP指向的指令开始执行程序。 • -G=100 ;从指定地址开始执行程序。 • -G=100 105 110 120 G命令
索引 • 注 释: • 1)最多可设置10个断点。 • 2)断点必须设置在一条指令的首字节。 • 3)如设置了多个断点,程序在第一个断点停下 • 后,显示寄存器、标志及下一条要执行的指令,再次 • 输入G命令,程序继续往下执行,直到下一个断点或 • 程序结束。 • 4)程序如有错误,执行时可能造成死机。 G命令2
索引 • 8.跟踪命令(单步执行命令)T • ① T;从当前IP开始执行一条指令。 • ② T 数值;从当前IP开始执行多条指令。 • ② T =地址; • ③ T =地址 数值; • -T • -T5 /-T=100 5 必须用分割符 T命令
索引 • 9.跟踪执行并跳过子程序命令P • P [=地址] [数值];类似T命令,但跳过子程序 • 和中断服务程序。 • 10.退出DEBUG命令Q • Q;返回DOS环境。 • -Q P、Q命令
索引 • 11.命名命令N • N 文件标示符;指定文件,以便用W命令在磁盘 • 上生成该文件,或者用L命令从磁盘装入该文件。 • -N MY_PRO.COM • 写盘:在当前盘当前目录生成指定文件。 • 读盘:在当前盘当前目录读取指定文件。 • - N A:\ USER \ MY_PRO.COM N命令
索引 • 12.装入命令L • ① L [地址];装入N命令指定的文件,默认的内 • 存地址为CS:100。 • -N MY_PRO.COM • -L • ② L 地址 驱动器号 扇区号 扇区数;将某驱动 • 器的若干扇区(最多80H个)装入内存;0=A,1=B, • 2=C……;默认的段地址为CS。 • -L DS:200 2 0 1 L命令
索引 • 13.写盘命令W • ① W [地址];将指定地址开始的内存数据写 • 入磁盘,生成N命令指定的文件;默认的内存地址为 • CS:100;写盘的字节数由BX(高位字)和CX(低位字)决 • 定,可执行程序写盘时,文件扩展名应指定.COM。 • -N MY_PRO.COM • -W • ② W 地址 驱动器号 扇区号 扇区数;将内存数 • 据写入磁盘的若干扇区(最多80H);默认的段地址 • 为CS。 • -W DS:0 2 0 1 • 注释:写磁盘扇区要慎用。 W命令
索引 • 14.其他命令 • *比较命令C • C 范围 地址;将指定范围内的内容与以指定 • 地址为起点的内容相比较。 • *16进制数计算命令H • H 数1,数2(H 数1 数2);同时计算两个数 • 字的和与差。 • *查找命令S • S 范围 数据;在指定范围内查找指定数据。 其他命令1
索引 • *输入命令I • I 端口地址;输入一个字节并显示。 • *输出命令O • O 端口地址 字节数据;输出到指定的端口。 • *传送命令M • M 范围 地址;将指定范围的内容传送到以指 • 定地址为起点的存储单元。 完 其它命令2