debug命令使用说明

上传人:简****9 文档编号:101765290 上传时间:2019-09-29 格式:PDF 页数:43 大小:290.61KB
返回 下载 相关 举报
debug命令使用说明_第1页
第1页 / 共43页
debug命令使用说明_第2页
第2页 / 共43页
debug命令使用说明_第3页
第3页 / 共43页
debug命令使用说明_第4页
第4页 / 共43页
debug命令使用说明_第5页
第5页 / 共43页
点击查看更多>>
资源描述

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

1、1/43 微机原理及应用 -Debug命令帮助 2/43 nDOS程序结构(补充,不作要求) 3/43 1. EXE程序 n可执行程序(executalble program)以.exe为后缀,由 多个段组成;长度可大于64KB;(磁盘上的)EXE 文件和内存中的.exe文件不大一样,它包括: n文件头:控制信息、重定位信息; n装入模块:程序本身。 n程序由系统(命令解释器 或者 debug.exe)装载进内存后,其段分布如图所示,初 始化段寄存器内容如下: 1)DS、ES指向PSP(Program Segment Prefix-程序 段前缀,包含一些系统信息和命令行参数)段地址。 程序中须

2、重新设置,使其指向数据段(和附加段)。 2)CS:IP和SS:SP由连接程序确定;如果不指定堆栈 段,则SS=PSP的段地址,SP=100H,堆栈段占用 PSP的部分区域,有时也能正常工作。为安全,应设 置堆栈段。 系统使用系统使用 P S P 代码段代码段 数据段数据段 堆栈段堆栈段 剩余内存剩余内存 SS SP CS IP 00000H DS=ES 4/43 2. COM程序 n代码段、数据段以及堆栈段 (附加段)合并成一个段,长 度不超过64KB。 n磁盘上的COM文件是内存的完 全映象,不含附加信息。 ncom程序装载进内存后, 1)所有段地址都指向PSP的段 地址; 2)执行起点:C

3、S:0100 处。 3)SP自动设为0FFFEH(64K 的最后一个字单元。且将 0FFFEH和0FFFFH单元设为0。 CS=DS=ES=SS SP=FFFEH IP=0100H 系统使用系统使用 P S P 代 码代 码 数 据数 据 0000 剩余内存剩余内存 00000H 64KB 5/43 nDOS系统功能调用 6/43 DOS和BIOS调用 nDOS(Disk Operation System)和BIOS(Basic Input and Output System)是为用户提供的两组系统服务程序。 nBIOS是IBM PC/XT的基本I/O系统,负责管理系统的测试程 序、初始化引导

4、程序、一部分中断矢量装入程序及外部设 备的服务程序。由于这些程序固化在ROM中,用户可以直 接调用。 nDOS是IBM PC/XT的操作系统,负责管理系统的所有资 源,协调微机的操作,其中包括大量的可供调用的服务子 程序,完成设备的管理和磁盘文件的管理。 n用户控制PC机硬件的方法: 高级语言调用DOS程序使用BIOS程序直接访问硬件 7/43 DOS 系统功能调用 nDOS和ROM-BIOS都以中断服务程序的形式 向用户提供大量子程序,供用户编程时调用。 “系统功能调用”一般是指调用DOS的INT 21H提供的子程序,调用BIOS提供的中断子 程序一般称为“BIOS调用”。 n系统功能调用格

5、式: n在AH中设置调用的功能号; n在指定的寄存器中设置入口参数; n执行INT 21H指令,调用功能子程序; n如果需要,分析出口参数。 8/43 1、单个字符输出 nAH=02;入口参数:DL=字符的ASCII码 MOV AH,2 MOV DL,A INT 21H ;可输出控制字符 2.字符串输出 nAH=09;入口参数:DS:DX=字符串首地址 字符串必须以(24H)结尾 string db Hello!,0dh,0ah, mov ah,9 mov dx,offset string int 21h 9/43 3.单个字符输入 nAH=1;入口参数:无;出口参数:AL=字符ASCII码

6、(系统一直等待,直到有键按下) 4.字符串的输入 nAH=0AH;入口参数:DS:DX=缓冲区首地址 “回车”表示输入结束;缓冲区第一个字节添入可能输入的 最多字符数(含回车),第二个字节将存放实际输入的 字符数(不含回车),从第三个字节开始存放输入的字 符。 buf db 100mov ds,dx db 0 mov dx,offset buf db 101 dup(0) mov ah,0ah int 21h mov dx,seg buf 10/43 5. 返回DOS nAH=4CH,入口参数:无;出口参数:无 MOV AH,4CH INT21H 6. 利用INT 20H功能返回DOS n需要

7、将主程序定义为DOS系统的子程序(在完整段定义 部分已经说明) MYPR PROC FAR PUSHDS ;程序初始化时DS执行程序段前缀PSP SUB AX,AX ;其中的第一条指令就是INT 20h PUSH AX ;这三条指令把PSP的地址压入堆栈 . RET; 返回到PSP第一条指令 MYPR ENDP 11/43 nDEBUG 命令解释 12/43 进入Debug的方法: n桌面快捷栏开始 运行(R) 输入 cmd.exe 出现一黑屏窗口在命令提示 符后输入debug。在提示符 处可输入 后 面介绍的命令 13/43 Debug:A(汇编) n该命令从汇编语言语句创建可执行的机器码。

8、 na address n参数 address 指定键入汇编语言指令的位置。如 果不指定地址,a 将在它上次停止处开始汇 编 n输入指令,最后以Ctrl+C结束输入 n支持db、dw伪指令 db 1,2,3,4,“THIS IS AN EXAMPLE“ dw 1000,2000,3000,“BACH“ 14/43 Debug:C(比较) n比较内存的两个部分。 c range address n参数 range 指定要比较的内存第一个区域的起始和结 束地址,或起始地址和长度。 1. segr:offset1 offset2 例如 cs:100 10F 2. segr:offset1 l len

9、gth cs:100 l 10 nAddress 指定要比较的第二个内存区域的起始地 址 15/43 n如果 range 和 address 内存区域相同,Debug 将 不显示任何内容而直接返回到 Debug 提示符。如 果有差异,Debug 将按如下格式显示: address1 byte1 byte2 addess2 n举例 c100,10f 300 对 100h 到 10Fh 的内存数据块与 300h 到 30Fh 的 内存数据块进行比较 197F:0100 4D E4 197F:0300 197F:0101 67 99 197F:0301 197F:0102 A3 27 197F:03

10、02 197F:0103 35 F3 197F:0303 。 16/43 DEBUG:D(显示内存内容) 显示内存单元的内容 d range n参数 range 指定要显示其内容的内存区域的起始和结束地 址,或起始地址和长度。如果不指定 range, Debug 程序将从以前 d 命令中所指定的地址范 围的末尾开始显示 128 个字节的内容,范围仅限 于同一段。 17/43 十六进制部分,16 字节/行ASCII 码部分 连字符每个非打印字符 18/43 nd cs:100 10F 显示范围从 CS 段的 100h 到 10Fh 中所有字节的内容 08D0:0100 70 61 67 65 7

11、3 20 68 61-76 65 20 62 65 65 6E 20 pages have been nd ds:100 10F 显示范围从 DS 段的 100h 到 10Fh 中所有字节的内容 08B7:0100 48 65 72 65 20 61 72 65-20 74 77 65 6E 74 79 2D Here are twenty- nd 100 l 20 从 DS:100 开始显示 20h 个字节的内容 08B7:0100 48 65 72 65 20 61 72 65-20 74 77 65 6E 74 79 2D Here are twenty- 08B7:0110 73 69

12、 78 20 65 6E 67 6C-69 67 68 20 6C 65 74 74 six engligh lett 19/43 DEBUG E(键入) n将数据输入到内存中指定的地址。 可以按十六进制或 ASCII 格式键入数据。以前 存储在指定位置的任何数据全部丢失。 e address list 参数 address 指定输入数据的第一个内存位置。 list 指定要输入到内存的连续字节中的数据。 20/43 List为空则进入一个字节一个字节输入过程 08B7:002C DD. DD.ff EE. 原内容.新输入 输入可以是: SPACEBAR(空格键)进入下一个字节 键入新值 更改该

13、字节中的值(0F 否则不回显) HYPHEN 键 (-) 返回到前一个字节 ENTER 键停止执行 e 命令 21/43 n使用 list 参数 如果指定 list 参数的值,随后的 e 命令将使用 列表中的值替换现有的字节值。如果发生错 误,将不更改任何字节值。 List 值可以是十六进制字节或字符串。使用空 格、逗号或制表符来分隔值。必须将字符串包 括在单或双引号中。 22/43 Debug:F(填充) n使用指定的值填充指定内存区域中的地址。 可以指定十六进制或 ASCII 格式表示的数据。 任何以前存储在指定位置的数据将会丢失。 -f range list n如果 range 包含的字

14、节数比 list 中的数值大, Debug 将在 list 中反复指派值,直到 range 中 的所有字节全部填充。如果 list 包含的数值多 于 range 中的字节数,Debug 将忽略 list 中额 外的值。 23/43 n-f 2cl40 48 65 72 65 n-d 2c n从 ds:2c 之后40H的单元重复填充48 65 72 65这四个字节 24/43 Debug:G(转向) n运行当前在内存中的程序。 g =address breakpoints 参数 =address 指定当前在内存中要开始执行的程序地址。如果 不指定 address,将从 CS:IP 寄存器中的当前

15、地 址开始执行程序。 Breakpoints 指定可以设置为 g 命令的部分的 1 到 10 个临时断点。断点为指令地址 25/43 Debug:H(十六进制) n对指定的两个参数执行十六进制运算。 h value1 value2 参数value1/2 代表从 0 到 FFFFh 范围内 的任何十六进制数字。 nDebug 首先将指定的两个参数相加,然后 第一个参数中减去第二个参数。这些计算的 结果显示在一行中:先计算和,然后计算差。 26/43 Debug:I(端口输入) n从指定的端口读取并显示一个字节值。 i port 参数 port 按地址指定输入端口。地址可以是 16 位的 值。 2

16、7/43 Debug:L(从磁盘加载) n将某个文件或特定磁盘扇区的内容加载到内存。 nl address ,文件名由n命令预先指定 要从磁盘文件加载 BX:CX 寄存器中指定的字节数内容到 address。如果是.exe文件,Debug 将文件重新定位 到 .exe 文件的标题中指定的加载地址,因此忽略address 参数;如果不带参数,则缺省使用地址 CS:100 。Debug 同 时将 BX 和 CX 寄存器设置为加载的字节数 nl address drive start number 略过 文件系统并直接加载特定的扇区 ndrive 指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C 等。 nStart 指定要加载其内容的第一个扇区的十六进制数。 nNumber 指定要加载其内容的连续扇区的十六进制数 28/43 Debug:M(移动) n将一个内存块中的内容复制到另一个内存

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

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