资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
TD.EXE 简要使用说明TD. EXE(简称 TD)是一个具有窗口界面的程序调试器。利用 TD,用户能够调试已有的可执行程序(后缀为 EXE) ;用户也可以在 TD 中直接输入程序指令,编写简单的程序(在这种情况下,用户每输入一条指令,TD 就立即将输入的指令汇编成机器指令代码) 。作为入门指导,下面简单介绍一下 TD 的使用方法,更详细深入的使用说明请参考相关资料。一、如何启动 TD二、TD 中的数制三、TD 的用户界面四、代码区的操作五、寄存器区和标志区的操作六、数据区的操作七、堆栈区的操作一、如何启动 TD1 在 DOS 窗口中启动 TD 仅启动 TD 而不载入要调试的程序转到 TD.EXE 所在目录(假定为 C:ASM) ,在 DOS 提示符下键入以下命令(用户只需输入带下划线的部分,表示回车键,下同):C:ASMTD用这种方法启动 TD,TD 会显示一个版权对话框,这时按回车键即可关掉该对话框。 启动 TD 并同时载入要调试的程序转到 TD.EXE 所在目录,在 DOS 提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):C:ASMTD HELLO.EXE若建立可执行文件时未生成符号名表,TD 启动后会显示 “Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。2 在 Windows 中启动 TD 仅启动 TD 而不载入要调试的程序 双击 TD.EXE 文件名,Windows 就会打开一个 DOS 窗口并启动 TD。启动 TD 后会显示一个版权对话框,这时按回车键即可关掉该对话框。 启动 TD 并同时载入要调试的程序把要调试的可执行文件拖到 TD.EXE 文件名上,Windows 就会打开一个 DOS 窗口并启动 TD,然后 TD 会把该可执行文件自动载入内存供用户调试。若建立可执行文件时未生成符号名表,TD 启动后会显示 “Program has no symbol table”的提示窗口,这时按回车键即可关掉该窗口。二、TD 中的数制TD 支持各种进位记数制,但通常情况下屏幕上显示的机器指令码、内存地址及内容、寄存器的内容等均按十六进制显示(数值后省略“H” ) 。在 TD的很多操作中,需要用户输入一些数据、地址等,在输入时应遵循计算机中数的记数制标识规范。例如:二进制数后面加“B”或“b” ,如 10010001b 等;十六进制数后面加“H”或“h” ,如 38h、0a5h、0ffh 等。如果在输入的数后面没有用记数制标识字母来标识其记数制,TD 默认该数为十六进制数。但应注意,如果十六进制数的第一个数字为“a”“f” ,则前面应加 0,以区别于符号和名字。TD 允许在常数前面加上正负号。例如,十进制数的-12 可以输入为-12d,十六进制数的-5a 可以输入为-5ah,TD 自动会把输入的带正负号的数转换为十六进制补码数。只有一个例外,当数据区的显示格式为字节,若要修改存储单元的内容则不允许用带有正负号的数,而只能按手工转换成补码后再输入。本实验指导书中所有的实验在输入程序或数据时,若没有特别说明,都可按十六进制数进行输入,若程序中需要输入负数,可按上述规则进行输入。三、TD 的用户界面1 CPU 窗口TD 启动后呈现的是一个具有窗口形式的用户界面,见图 B.1,它称为 CPU 窗口。CPU窗口显示了 CPU 和内存的整个状态。利用 CPU 窗口可以: 在代码区内使用嵌入汇编,输入指令或对程序进行临时性修改。 存取数据区中任何数据结构下的字节,并以多种格式显示或改变它们。 检查和改变寄存器(包括标志寄存器)的内容。图 B.1 TD 的 CPU 窗口界面CPU 窗口分为五个区域:代码区、寄存器区、标志区、数据区和堆栈区。在五个区域中,光标所在区域称为当前区域,用户可以使用 Tab 键或 Shift-Tab 键切换当前区域,也可以在相应区中单击鼠标左键选中某区为当前区。光标在各个区域中显示形式稍有不同,在代码区、寄存器区、标志区和堆栈区呈现为一个反白条,在存储器区为下划线形状。在图 B.1 中,CPU 窗口上边框的左边显示的是处理器的类型(8086、80286、80386、80486 等,对于 80486 以上的 CPU 均显示为 80486) 。上边框的中间靠右处显示了当前指令所访问的内存单元的地址及内容。再往右的“1”表示此CPU 窗口是第一个 CPU 窗口, TD 允许同时打开多个 CPU 窗口。CPU 窗口中的代码区用于显示指令地址、指令的机器代码以及相应的汇编指令;寄存器区用于显示 CPU 寄存器当前的内容;标志区用于显示 CPU的 8 个标志位当前的状态;数据区用于显示用户指定的一块内存区的数据(十六进制) ;堆栈区用于显示堆栈当前的内容。在代码区和堆栈区分别显示有一个特殊标志() ,称为箭标。代码区中的箭标指示出当前程序指令的位置(CS:IP) ,堆栈区中的箭标指示出当前堆栈指针位置(SS:SP) 。2 全局菜单介绍CPU 窗口的上面为 TD 的全局菜单条,可用 “ALT 键+菜单项首字符”打开菜单项对应代码区 数据区 寄存器区 堆栈区 标志区功能键提示条全局菜单的下拉子菜单。在子菜单中用“” 、 “”键选择所需的功能,按回车键即可执行选择的功能。为简化操作,某些常用的子菜单项后标出了对应的快捷键。下面简单介绍一下常用的菜单命令,详细的说明情查阅相关资料。(1) File 菜单:文件操作Open 载入可执行程序文件准备调试Change dir 改变当前目录Get info 显示被调试程序的信息DOS shell 执行 DOS 命令解释器(用 EXIT 命令退回到 TD)Quit 退出 TD(Alt-X)(2)Copy 复制当前光标所在内存单元的内容到粘贴板(Shift-F3)Paste 把粘贴板的内容粘贴到当前光标所在内存单元(Shift-F4)(3)Breakpoints 断点信息Stack 堆栈段内容Watches 被监视对象信息Variables 变量信息Module 模块信息File 文件内容CPU 打开一个新的 CPU 窗口Dump 数据段内容Registers 寄存器内容(4)Run 从 CS:IP 开始运行程序直到程序结束(F9)Go to cursor 从 CS:IP 开始运行程序到光标处(F4)Trace into 单步跟踪执行(对 CALL 指令将跟踪进入子程序)(F7)Step over 单步跟踪执行(对 CALL 指令将执行完子程序才停下)(F8)Execute to 执行到指定位置(Alt-F9)Until return 执行当前子程序直到退出(Alt-F8)(5)Toggle 在当前光标处设置/清除断点(F2)At 在指定地址处设置断点(Alt-F2)Delete all 清除所有断点(6)Inspector 打开观察器以查看指定的变量或表达式Evaluate/Modify 计算和显示表达式的值Add watch 增加一个新的表达式到观察器窗口(7)Display options 设置屏幕显示的外观Path for source 指定源文件查找目录Save options 保存当前选项(8)Zoom 放大/还原当前窗口(F5)Next 转到下一窗口(F6)Next Pane 转到当前窗口的下一区域(Tab)Size/Move 改变窗口大小/移动窗口(Ctrl-F5)Close 关闭当前窗口(Alt-F3)User screen 查看用户程序的显示(Alt-F5) 3 功能键提示条菜单中的很多命令都可以使用功能键来简化操作。功能键分为三组:F1F10 功能键,Alt-F1 Alt-F10 功能键以及 Ctrl 功能键(Ctrl 功能键实际上就是代码区的局部菜单) 。CPU 窗口下面的提示条中显示了这三组功能键对应的功能。通常情况下提示条中显示的是 F1F10 功能键的功能。按住 Alt 不放,提示条中将显示 Alt-F1Alt-F10 功能键的功能。按住 Ctrl 不放,提示条中将显示各 Ctrl 功能键的功能。表 B.1 列出了各功能键对应的功能。表 B.1键 功能 键 功能 键 功能F1 帮助 Alt-F1 帮助 Ctrl-G 定位到指定地址F2 设/清断点 Alt-F2 设置断点 Ctrl-O 定位到 CS:IPF3 查看模块 Alt-F3 关闭窗口 Ctrl-F 定位到指令目的地址F4 运行到光标 Alt-F4 Undo 跟踪 Ctrl-C 定位到调用者F5 放大窗口 Alt-F5 用户屏幕 Ctrl-P 定位到前一个地址F6 下一窗口 Alt-F6 Undo 关窗 Ctrl-S 查找指定的指令F7 跟踪进入 Alt-F7 指令跟踪 Ctrl-V 查看源代码F8 单步跟踪 Alt-F8 跟踪到返回 Ctrl-M 选择代码显示方式F9 执行程序 Alt-F9 执行到某处 Ctrl-N 更新 CS:IPF10 激活菜单 Alt-F10 局部菜单局部菜单TD 的 CPU 窗口中,每个区域都有一个局部菜单,局部菜单提供了对本区域进行操作的各个命令。在当前区域中按 Alt-F10 键即可激活本区域的局部菜单。代码区、数据区、堆栈区和寄存器区的局部菜单见图 B.2图 B.5 所示。标志区的局部菜单非常简单,故没有再给出其图示。对局部菜单中各个命令的解释将在下面几节中分别进行说明。图 B.2 代码区的局部菜单图 B.3 数据区的局部菜单图 B.4 堆栈区的局部菜单图 B.5 寄存器区的局部菜单四、代码区的操作代码区用来显示代码(程序)的地址、代码的机器指令和代码的反汇编指令。本区中显示的反汇编指令依赖于所指定的程序起始地址。TD 自动反汇编代码区的机器代码并显示对应的汇编指令。每条反汇编指令的最左端是其地址,如果段地址与 CS 段寄存器的内容相同,则只显示字母“CS”和偏移量(CS:YYYY) ,否则显示完整的十六进制的段地址和偏移地址(XXXX:YYYY) 。地址与反汇编指令之间显示的是指令的机器码。如果代码区当前光标所在指令引用了一个内存单元地址,则该内存单元地址和内存单元的当前内容显示在 CPU 窗口顶部边框的右部,这样不仅可以看到指令操作码,还可看到指令要访问的内存单元的内容。1 输入并汇编一条指令有时我们需要在代码区临时输入一些指令。TD 提供了即时汇编功能,允许用户在 TD 中直接输入指令(但直接输入的指令都是临时性的,不能保存到磁盘上) 。直接输入指令的步骤如下:(1) 使用方向键把光标移到期望的地址处。(2) 打开指令编辑窗口。有两种方法:一是直接输入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。二是激活代码(3) 区局部菜单(见下一小节) ,选择其中的汇编命令,屏幕上也会自动弹出指令的临时编辑窗口。(4) 在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在光标处,同时光标自动下移一行,以便输入下一条指(5) 令。注意,临时编辑窗口中曾经输入过的指令均可重复使用,只要在临时编辑窗口中用方向键把光标定位到所需的指令处,按回车即可。如果临时编辑(6) 窗口中没有完全相同的指令,但只要有相似的指令,就可对其进行编辑后重复使用。2 代码区局部菜单 当代码区为当前区域时(若代码区不是当前区域,可连续按 T
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号