1、实验一DEBUG的使用Introduction to Computer Science (Shi-Jay Chen)编写汇编语言程序的两种方法o 用 MASM等编译器o 用调试程序 DEBUGn 最早是 DOS系统命令n 主要用途是纠错,即修正汇编语言程序中的错误。n 也可用于编写较短的汇编语言程序n 操作简单,是初学者较好的入门工具Introduction to Computer Science (Shi-Jay Chen)实验目的o 1、初步掌握调试程序 DEBUG的使用,熟悉 DEBUG的进入和退出。o 2、熟悉 DEBUG的常用命令用法及功能,特别是 D、 R、 E、 A、 U等。o
2、用 DEBUG熟悉学过的寻址方式Introduction to Computer Science (Shi-Jay Chen)实验安排o 1、教师讲解 DEBUG的常用命令用法及功能o 2、自己上机,熟悉 DEBUG的常用命令o 3、用 DEBUG熟悉学过的寻址方式Introduction to Computer Science (Shi-Jay Chen)Debug的启动的启动实验实验 1.1Introduction to Computer Science (Shi-Jay Chen)DEBUG的启动o 1、 WINDOWS的 “ 开始 ” 菜单中单击 “ 运行 ” ,然后在对话框中输入 “
3、 DEBUG” ,回车。o 2、 WINDOWS的 “ 开始 ” 菜单中单击 “ 运行 ” ,然后在对话框中输入 “ command” ,回车,之后,在 DOS命令提示符后输入 “ DEBUG” ,回车。o 出现 Debug的提示符 “ ” ,此时就可用 Debug命令来调试程序。 Introduction to Computer Science (Shi-Jay Chen)Debug常用命令常用命令实验实验 1.2Introduction to Computer Science (Shi-Jay Chen)Debug命令 的格式o Debug的命令都是一个字母,后跟一个或多个参数: 字母 参
4、数 o 1、用于命令的字母不分大小写;o 2、使用十六进制,没有后缀;o 3、两个数值间需要分隔符(空格或逗号);o 4、每个命令只有按回车才生效, CTRL+BREAK中止命令的执行。o 5、键入的命令错误,会用 “ ERROR” 提示,并用“ ” 指示错误位置。Introduction to Computer Science (Shi-Jay Chen)DEBUG命令 显示命令 Do D( Dump)命令显示主存单元的内容o 格式D 地址 ;显示当前或指定开始地址的主存内容D 范围 ;显示指定范围的主存内容ExampleIntroduction to Computer Science (S
5、hi-Jay Chen)命令的参数o 许多命令的参数是主存逻辑地址,形式是 “段基地址 : 偏移地址 ”。其中,段基地址可以是段寄存器或数值;偏移地址是数值。o 如果不输入段地址,则采用默认值,可以是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。o 对主存操作的命令还支持地址范围这种参数,它的形式是: “开始地址 结束地址 ”(结束地址不能具有段地址),或者是: “开始地址 L字节长度 ”。Introduction to Computer Science (Shi-Jay Chen)DEBUG命令 显示命令 D( Dump) o 解释:n 左边部分是主存逻辑地址n 中间是连续
6、16个字节的主存内容( 16进制数,以字节为单位)n 右边部分是这 16个字节内容的 ASCII字符显示,不可显示字符用点 “ .” 表示。一个 D命令仅显示 “ 8行 16 个字节 ” 内容。ExampleIntroduction to Computer Science (Shi-Jay Chen)DEBUG命令 显示命令 D( Dump) o -d 100 ;显示数据段 100h开始的主存单元-d cs:0 ;显示代码段的主存内容-d2f0 L20 ;显示 ds:2f0h开始的 20h个主存数据ExampleIntroduction to Computer Science (Shi-Jay
7、 Chen)修改命令 E( Enter) o 用于修改主存内容o 格式:E 地址 ; 格式 1,修改指定地址的内容E 地址 数据表 ; 格式 2,用数据表的数据修改指定地址的内容ExampleIntroduction to Computer Science (Shi-Jay Chen)修改命令 E( Enter) o E 地址 ;格式 1,修改指定地址的内容o 格式 1是逐个单元相继修改的方法。o 键入 “e ds:100”, Debug显示原来内容,用户可以直接输入新数据,然后按空格键显示下一单元内容,或者按 “ ”键显示上一个单元的内容;不需要修改可以直接按空格或 “ ”键;这样,用户可以
8、不断修改相继单元的内容,直到用回车键结束该命令为止。Introduction to Computer Science (Shi-Jay Chen)修改命令 E( Enter) o E 地址 数据表 ;格式 2,用数据表的数据修改指定地址的内容o 格式 2可以一次修改多个单元o 例如:-e ds:100 F3xyz8f ;用 F3/x/y/z/8f这 5个数据替代DS:0100 0104 的原来内容。Introduction to Computer Science (Shi-Jay Chen)填充命令 F( Fill) o 用于对一个主存区域填写内容,同时改写原来的内容,其格式为:F 范围 数据
9、表o 该命令用数据表的数据写入指定范围的主存。如果数据个数超过指定的范围,则忽略多出的项;如果数据个数小于指定的范围,则重复使用这些数据,直到填满指定范围。Introduction to Computer Science (Shi-Jay Chen)填充命令 FExampleIntroduction to Computer Science (Shi-Jay Chen)寄存器命令 R ( Register)o 用于显示和修改处理器的寄存器,有三种格式。o 格式 1:R ;显示所有寄存器内容和标志位状态o 前两行给出所有寄存器的值,包括各个标志状态。o 最后一行给出了当前 CS : IP 处的指令
10、;指令涉及数据,这一行的最后给出相应单元的内容。 ExampleIntroduction to Computer Science (Shi-Jay Chen)寄存器命令 R ( Register)o 用于显示和修改处理器的寄存器,有三种格式。o 格式 2:R 寄存器名 ; 显示和修改指定寄存器 o Debug给出当前 AX内容,冒号后用于输入新数据,如不修改则按 Enter键。 Example 键入 “r ax”Introduction to Computer Science (Shi-Jay Chen)寄存器命令 R ( Register)o 用于显示和修改处理器的寄存器,有三种格式。o 格
11、式 3:RF ;显示和修改标志位o Debug将显示当前各个标志位的状态。显示的符号及其状态如表 F1.1所示,用户只要输入这些符号就可以修改对应的标志状态,键入的顺序可以任意。 ExampleIntroduction to Computer Science (Shi-Jay Chen)标志位置位 &复位Introduction to Computer Science (Shi-Jay Chen)汇编命令 A( Assemble) o 将输入的汇编指令汇编成为机器代码存于主存。A 地址 ;从指定地址开始汇编指令n A命令中如果没有指定地址,则接着上一个 A命令的最后一个单元开始;n 若还没有使
12、用过 A命令,则从当前 CS : IP开始。n 最后要输入一个回车结束 A命令o 输入 A命令后,输入 8086指令, Debug将它们汇编成机器代码,相继存放在指定地址开始的存储区中。Introduction to Computer Science (Shi-Jay Chen)汇编命令 A( Assemble) o 进行汇编的步骤如下:n 输入汇编命令 A 地址 ,按回车。 Debug提示地址,等待输入新指令;n 输入汇编指令,按回车;n 如上继续输入汇编指令,直到输入所有指令;n 按回车结束汇编,返回 Debug的提示符状态。计算 5+8ExampleIntroduction to Com
13、puter Science (Shi-Jay Chen)反汇编命令 U (Unassemble )o 将主存内容按照机器代码形成汇编指令显示:U 地址 ;从指定地址开始,反汇编 32个字节U 范围 ;对指定范围的主存内容进行反汇编o U命令中如果没有指定地址,则接着上一个 U命令的最后一个单元开始;若还没有使用过 U命令,则从当前 CS : IP开始。Introduction to Computer Science (Shi-Jay Chen)反汇编命令 U (Unassemble )o 屏幕显示的左边是主存逻辑地址,中间是该指令的机器代码,而右边则是对应的指令汇编格式。Example 计算
14、5+8Introduction to Computer Science (Shi-Jay Chen)反汇编命令 U (Unassemble )o 屏幕显示的左边是主存逻辑地址,中间是该指令的机器代码,而右边则是对应的指令汇编格式。Example 计算 FFFF+1Introduction to Computer Science (Shi-Jay Chen)运行命令 G( Go) o 从指定地址处开始运行程序,直到遇到断点或者程序正常结束。G =地址 断点地址 1,断点地址 2,.,断点地址 10o G命令等号后的地址指定程序段运行的起始地址,如不指定则从当前的 CS : IP开始运行。o 断点
15、地址如果只有偏移地址,则默认是代码段 CS;断点可以没有,但最多只能有 10个。Introduction to Computer Science (Shi-Jay Chen)跟踪命令 T( Trace)o 也称单步命令,每执行一条指令就显示运行结果,使程序员可以细致地观察程序的执行情况。T =地址 ;逐条指令跟踪T =地址 数值 ;多条指令跟踪o 从指定地址起执行一条或数值参数指定条数的指令后停下来,每条指令执行后都要显示所有寄存器和标志位的值以及下一条指令。如未指定地址则从当前的 CS : IP开始执行。o 注意给出的执行地址前有一个 等号 。Introduction to Computer Science (Shi-Jay Chen)其它命令o 退出命令 Q( Quit):使 Debug程序退出返回。Introduction to Computer Science (Shi-Jay Chen)实验内容实验内容实验实验 1.3Introduction to Computer Science (Shi-Jay Chen)