微机原理实验一DEBUG练习和EXE文件生成过程.doc
文本预览下载声明
实验一 DEBUG练习及EXE文件生成过程
一、实验性质:验证型
二、实验目的:掌握debug的使用,能建立和运行汇编语言程序
三、实验任务及步骤
(一)用debug建立和运行汇编语言程序
debug是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可显示修改内存与寄存器内容,以便在调试程序中检查程序,找错,改错;它还支持小汇编,直接对小段程序进行汇编;也可对盘进行读写操作。但debug不宜汇编较长的程序,不便于分块程序的设计,不能使用绝大多数ASM和MASM提供的伪指令。
debug的进入是DOS状态下键入debug文件名,便进入debug状态,在debug的提示符“—”下键入debug命令。
Cdebug ↙
debug命令以单个字母的命令符开头,然后是命令操作参数,操作参数与操作参数之间,用空格或逗号分开,操作参数与命令符之间用空格隔开,命令的结束符是回车键↙。命令及参数的输入可以是大小写的结合,CtrL +break键中止命令的执行。debug下所用的数均为十六进制数,且不必写H。
debug的常用命令有:
1.汇编命令A
格式:(1) A段寄存器名:位移
(2) A段地址:位移
(3) A位移
(4) A
功能:键入该命令后显示段地址和位移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,直到显示下一地址时用户直接键入回车键返回到提示符“—”。其中(1)用指定寄存器内容作段地址,(3)用CS内容作段地址,(4)用CS:0100作地址。
以后其它命令中提及的各种“地址”形式,均为(1)、(2)、(3)中A后的地址形式。
2.反汇编命令U
格式1:U 地址
格式2:U 地址范围
功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。
3.显示内存命令
格式:(1) D地址;以CS为段寄存器
(2) D地址范围
(3) D;显示CS:0100起始的一片内容。
功能:以两种形式显示指定内存范围内容。一种形式为十六进制内容,一种形式为相应字节的ASCII码字符,对不可见字符以“?”代替。
4.修改内存命令E
格式:(1) E地址单元内容
(2) E地址单元内容表
功能:(1) 将指定内容写入指定单元后显示下一地址,可连续键入修改内容,直到新地址出现后键入↙为止。
(2) 将单元内容表逐一写入由地址开始的一片单元。
5.填充内存命令F
格式:F 地址范围 单元内容表
功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。
例如:—F 12FF:0000 0100 A↙
—D 12FF:0000 0100 ↙
6.显示并修改寄存器命令R
格式1:R
格式2:R寄存器名
功能:格式1显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句格式。其中对状态标志FLAG以每位的形式显示。格式2显示指定寄存器内容。
例如:R IP ↙
7.单步执行并显示系统环境T
格式:T[=地址][条数]
功能:地址的缺省值是当前IP值,条数的缺省值是一条。执行由指定地址起始的条数指定的若干条指令。
例如:—T;执行当前指令并显示状态
—T10;从当前指令始执行10H条指令。
8.连续执行命令G
格式:(1) G=起始地址 断点地址
(2) G结束地址;从IP指向的地址开始执行程序到结束地址。
9.退出debug命令Q
—Q ↙ ;进入DOS状态下
C
例如:利用串操作传送指令将0FFH送入附加段的0180H开始的128个字节存储单元中,编写一段程序。
1.进入DEBUG状态
CDEBUG ↙
—
2.用A命令编辑源程序
一A ↙
××××:0100 MOV DI,0180 ↙
0103 MOV CX, 80 ↙
0106 MOV AL, FF ↙
0108 REP STOSB ↙
010A HLT ↙
010B ↙
3.用U命令反汇编以上源程序
一U CS:0100 ↙
××××:0100 BF8001 MOV DI,0180
××××:0103 B98000 MOV CX,0080
××××:0106 BOFF MOV AL,FF
××××:0108 F3 REPE
××××:0109 AA STOSB
××××:010A F4 HLT
4.若源程序有错可返回第2步用A命令进行修改,再进行第3步。若无错误,可运行程序。
5.用R命令观察程序未执行前,程序中各有关寄存器内容,并填入括号内。
一R ↙
AL=( ) DI=( ) CX=( ) DS=( )
CS=( ) IP=( )
6.用D命令观察程序未执行前,存放结果的存储区的内容。
—D ES:0180 ↙
7
显示全部