汇编上机调试程序debug

上传人:wm****3 文档编号:42921794 上传时间:2018-06-04 格式:DOC 页数:11 大小:73KB
返回 下载 相关 举报
汇编上机调试程序debug_第1页
第1页 / 共11页
汇编上机调试程序debug_第2页
第2页 / 共11页
汇编上机调试程序debug_第3页
第3页 / 共11页
汇编上机调试程序debug_第4页
第4页 / 共11页
汇编上机调试程序debug_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《汇编上机调试程序debug》由会员分享,可在线阅读,更多相关《汇编上机调试程序debug(11页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计实验指导书汇编语言程序设计实验指导书实验一 调试程序DEBUG 调试程序是以 DOS 外部命令程序的形式提供的,它的文件名 为 DEBUG.COM。在进入 DEBUG 后,机器呈现一个控制测试的环境,程序 员能够监视和控制被调用程序的运行,可以直接发现问题,判定问题是否解 决,输入汇编指令层的源程序就能立即得到其机器语言程序。优优点点是:可在最小的环境下运行;调试周期短;程序员可在不熟悉汇编语 言伪指令的情况下编程及运行汇编程序;使用户更紧密的与计算机中真正进 行的工作相联系。缺点缺点是:不能使用 MASM 提供的伪指令,编程效率低、繁琐、程序不宜 太长,不便于分块程序设计。一

2、、一、实验实验目的目的熟悉 debug 环境;学习和掌握汇编语言源程序(小汇编)的编写方法;学会调试简单的程序。二、二、实验实验原理原理使用 MS-DOS 中自带的 debug.exe 调试简单汇编语言程序。三、主要三、主要仪仪器及耗材器及耗材计算机与 Windows 系统,MS-DOS,DEBUG.EXE。四、四、实验实验内容与步内容与步骤骤1 实验步骤(1)启动计算机的 WINDOWS 操作系统,运行 DEBUG 程序。方法 1:在开始菜单中找到“运行”,输入“cmd”后确定,启动 ms-dos 程序,进入命令提示符下,再输入“DEBUG”并按回车,即启动 DEBUG 调试程序。方法 2:

3、在开始菜单中找到“运行”,输入“DEBUG”后确定,即启动 DEBUG调试程序。例 1.在 DEBUG 在运行如下程序-a 100MOV DL,33H ;字符3的 ASCII 码送 DLMOV AH,2 ; 使用 DOS 的 2 号功能调用INT 21H ; 进行功能调用,输出字符3INT 20H ; 正常结束程序中断调用-g结果(2)使用 DEBUG 命令关于 DEBUG 程序的更详细用法,可再进入 DEBUG 程序后输入“?”而获得。DEBUG 的命令共有 18 条。汇编命令(Assemble)用途:输入汇编命令,并把它们汇编成机器代码,相继存放在从指定地址开始的存储区中。格式:A add

4、ress说明:所有输入数字是十六进制的。将输入额度指令从指定的地址 address处开始装入内存的连续单元。否则,把语句装入 CS:0100 确定的区域中;如果前面已经使用了 A 命令,那么就在前一个 A 命令所装入的最后一条指令的后继单元中接着输入命令。举例:见例 1比较命令(Compare)用途:比较存储器中两个数据块的内容。格式:C range address说明:比较存储器两个数据的内容,range 给出第一个数据块的首地址及长度,address 给出第二个数据块的首地址。如果 range 和 address 内存区域相同,Debug 将不显示任何内容而直接返回到 Debug 提示符。

5、如果有差异,Debug 将按如下格式显示:address1 byte1 byte2 addess2 举例:C 100,10f 300C 100L10 300效果一样都是把 DS:100 开始的存储器的 16 个字节同 DS:300 开始的 16 个字节进行比较。显示内存命令(DUMP)用途:显示存储器的命令。格式:Daddress 或者 Drange说明:用两个部分来显示内存的内容。十六十六进进制部分制部分(每个字节的值都用十六进制格式表示)和 ASCII 码码部分部分(每个字节的值都用 ASCII 码字符表示)。每个非打印字符在显示的 ASCII 部分由句号 (.) 表示。举例:如果键入以下

6、命令,Debug 将从 CS:100 开始显示 20h 个字节的内容:d cs:100 l 20 如果键入以下命令,Debug 将显示范围从 CS 段的 100h 到 115h 中所有字节的内容: d cs:100 115修改内存命令(Enter)用途:替换;显示和允许顺序方式修改字节。格式:E address list说明:如果只输入偏移地址作为地址,那么 E 命令认为是包含在 DS 寄存器内的那个段。修改的两种格式:E address list例如:E ds:100 F3 “XYZ”8D ;用清单中指定的 5 个字节填满 ds:100 到ds:104 存储单元。eds:100 “This

7、is the text example“该字符串将从 DS:100 开始填充 24 个字节。假定键入以下命令:ecs:100Debug 按下面的格式显示第一个字节的内容:04BA:0100 EB.要将该值更改为 41,请在插入点键入 41,如下所示:04BA:0100 EB.41_可以用一个 e 命令键入连续的字节值。在键入新值后按 SPACEBAR(空格键),而不是按 ENTER 键。Debug 显示下一个值。在此范例中,如果按三次 SPACEBAR(空格键),Debug 将显示下面的值:04BA:0100 EB.41 10. 00. BC._要将十六进制值 BC 更改为 42,请在插入点键

8、入 42,如下所示:04BA:0100 EB.41 10. 00. BC.42_假定决定值 10 应该是 6F。要纠正该值,请按 HYPHEN 键两次以返回到地址 0101(值 10)。Debug 显示以下内容:04BA:0100 EB.41 10. 00. BC.42-04BA:0102 00.-04BA:0101 10._在插入点键入 6f 更改值,如下所示:04BA:0101 10.6f_按 ENTER 停止 e 命令并返回到 Debug 提示符下。填写命令(File)用途:用清单中的值填写 range 范围内的存储单元。格式:F range list说明:如果 range 包含的字节数

9、比 list 中的数值大,Debug 将在 list 中反复指派值,直到 range 中的所有字节全部填充。如果在 range 中的任何内存损坏或不存在,Debug 将显示错误消息并停止 f 命令。如果 list 包含的数值多于 range 中的字节数,Debug 将忽略 list 中额外的值。举例:F 4BA:100 L5 F3”XYZ”8D ;用指定的 5 个字节填写到内存的 04BA:104 单元中。注意,存储清单字符是 ASCII 字符码,因此 100104 单元中为 F3 58 59 5A 8D.执行命令(GO)用途:执行正在调试的程序。运行到断点处则停止执行。格式:G =addre

10、ss addressaddress说明:如果不采用=address 参数,就从 CS 和 IP 寄存器内容决定的地址开始执行程序。如果指定=address,则程序就从 CS:address 处开始执行。举例:G 102 1EF 208 ;当前指令从 CS:IP 的当前值开始,指定了 3 个断点,CS:102,CS:1EF,CS:208十六进制算术运算命令(Hexarithmetic)用途:先把两个十六进制数的值相加,然后第一个值减去第二个值,在一行上显示和与差。格式:H value value举例:H 0F 8结果显示为:17 07 分别为 000F 和 0008 的十六进制的和与差。输入命令

11、(Input)用途:从指定的端口输入并显示(用 16 进制)一个字节。格式:I portaddress举例:I 2F8显示 6B装入命令(Load)用途:把文件或绝对盘扇区装入内存中。格式:L addressdrive sector sector说明:用单个 Load 命令可装入的最大扇区数是 80H。drive 指定包含读取指定扇区的磁盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C 等.举例:L 4BA:100 1 0F 6D ;传送命令(Move)用途:把 range 指定的内容单元的内容,传送到以 address 指定开始的一些单元中。格式:M range addres

12、s说明:源区域的数据仍保持不变,除非由传送命令重写过。举例:M CS:100 110 500 ;共 17 个字节11.命名命令(Name)用途:为读写磁盘文件定义的文件名格式:H filespecfilespec说明:如果在无文件说明时启动 DEBUG,在用 L 命令装入文件之前,必须用Name 命令。举例:-N myprog-L12.输出命令(Output)用途:把字节发送到指定的端口。格式:O Portaddress byte举例:O 2F8 4F 13.退出命令(Quit)用途:结束 DEBUG 程序。格式:Q说明:Q 命令不保存内存中正工作的文件,需要时可以用 Write 命令保存文件

13、。14.寄存器命令(Register)用途:显示单个寄存器内容;显示全部寄存器和标志位;显示标志位。标志名标志为 1标志为 0OF 溢出OVNVDF 方向DNUPIF 中断EIDISF 符号NGPLZF 零ZRNZAF 辅助进位ACNAPF 奇偶PEPOCF 进位CYNC格式:R Registername举例:要查看所有寄存器的内容、所有标记的状态和当前位置的指令解码表,请键入以下命令:R如果当前位置是 CS:11A,显示外观将类似于以下内容:AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000DS=04BA ES=04

14、BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC04BA:011A CD21 INT 21要只查看标志的状态,请键入以下命令:rfDebug 按以下格式显示信息:NV UP DI NG NZ AC PE NC - _现在,您可以按任意顺序键入一个或多个有效的标志值,其中可以有或没有空格,如下所示:nv up di ng nz ac pe nc pleicyDebug 结束 r 命令并显示 Debug 提示符。要查看更改,请键入 r 或 rf 命令。Debug 将显示以下内容:NV UP EI PL NZ AC PE CY - _按 ENTER

15、 返回到 Debug 提示符。15.搜索命令(Search)用途:按照 list 清单中的字符检索 range 范围。格式:S range list说明:以显示被查找到的匹配字符所在的地址来指明全部的匹配。没有匹配的显示“-“举例:S CS:100 110 4116.跟踪命令(Trace)用途:从 CS:IP 或者=address 单元中的指令开始单步执行一条或多条指令。格式:T=addressvalue17.反汇编命令(Unassemble)用途:反汇编命令可把内存中的机器码转换成汇编语句,并显示指令的地址、机器码以及汇编语句。格式:Uaddress 或者 Urange举例:要反汇编 16

16、(10h) 字节,从地址 04BA:0100 开始,请键入以下命令:u04ba:100l10Debug 按以下格式显示结果:04BA:0100 206472 AND SI+72,AH04BA:0103 69 DB 6904BA:0104 7665 JBE 016B04BA:0106 207370 AND BP+DI+70,DH04BA:0109 65 DB 6504BA:010A 63 DB 6304BA:010B 69 DB 6904BA:010C 66 DB 6604BA:010D 69 DB 6904BA:010E 63 DB 6304BA:010F 61 DB 61如果只显示从 04BA:0100 到 04BA:0108 特定地址的信息,请键入以下命令:u04ba:0100 0108Debug 显示以下内容:04BA:0100 206472 AND SI+72,AH04BA:0103

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

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