实验一DEBUG命令及其操作.docx
- 文档编号:352903
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:11
- 大小:99.18KB
实验一DEBUG命令及其操作.docx
《实验一DEBUG命令及其操作.docx》由会员分享,可在线阅读,更多相关《实验一DEBUG命令及其操作.docx(11页珍藏版)》请在冰豆网上搜索。
实验一DEBUG命令及其操作
实验一--DEBUG命令及其操作
实验一DEBUG命令及其操作
一、实验目的
1.熟练掌握debug的常用命令,学会用debug命令汇编和调试程序。
2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3.掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1.实验前先预习附录1的内容,写出完成各实验内容的汇编程序清单。
2.本实验要求在PC机上进行。
3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。
三、实验内容
●实验内容1:
学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。
1.打开计算机,将系统切换到MS-DOS方式下,键入DEBUG后回车,将出现debug的提示符“-”。
2.在DEBUG提示符后键入字母“-a100”,回车后,屏幕上就会出现下面类似的内容:
-a100
1272:
0100(表示此时代码段的段地址为1272,
:
8
-w
Writing00008bytes
因为文件的字节数必须事先放在BX和CX中,其中BX保存高16位,CX保存低16位,整个32位的数保存文件的字节数,一般来说,BX设置为0,因为CX可存放的字节数为64K,对于一般的程序已足够了。
3.用Q命令退出DEBUG程序。
实验内容1报告要求:
1.写出上述每一步执行的目的;
2.小结debug常用命令及使用体会
●实验内容2
设AX=3000H,BX=5000H,通过堆栈实现将AX和BX的内容进行交换。
用DEBUG进行程序的汇编与调试。
提示:
AX和BX的值可用debug主的r命令将其送入相应寄存器中,也可用MOV指令完成。
实验内容2报告要求:
1.写出完成上述功能的程序段;
2.单步执行,并记录寄存器AX,BX及堆栈指针SP的变化。
●实验内容3
设DS=当前段地址,BX=0300H,SI=0002H。
用DEBUG的e命令将内存单元0300H~0304H装入0AH,0BH,0CH,0DH,0EH。
键入下列程序,单步执行。
程序清单如下:
MOVBX,0300
MOVSI,0002
MOVAX,BX
MOVAX,0304
MOVAX,[0304]
MOVAX,[BX]
MOVAX,0001[BX]
MOVAX,[BX][SI]
MOVAX,0001[BX][SI]
实验内容3报告要求:
1.写出源操作数的寻址方式;
2.单步执行,并记录相关寄存器及存储单元的内容
●实验内容4
设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
提示:
左移指令要用SHL,而不能使用SAL
实验内容4报告要求:
1.写出实现上述功能的程序段;
2.单步执行程序,记录每条指令的机器码及相关寄存器的内容
附录1调试程序——debug
在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调试,DEBUG就是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
它在调试汇编语言程序时有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元的内容,并能监视目标程序的执行情况,使用户真正接触到CPU内部,与计算机产生最紧密的工作联系。
在debug状态下,用户可以进行编辑、调试、监督、执行用户编写的汇编程序,可以修改内存单元、寄存器的内容,为调试程序、修改程序带来方便。
但在debug状态下运行的程序不能使用宏汇编程序中的宏命令,大部分伪指令也不能使用,因此只能把程序分段执行。
一、DEBUG程序的进入
在DOS的提示符下,可键入命令:
DEBUG[D:
][PATH][FILENAME[.EXT]][PARM1][PARM2]
其中:
●命令中的D指定驱动器,PATH为路径;
●[FILENAME[.EXT]文件名是被调试文件的名字,注意扩展名必不可少。
如用户键入文件名,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
●PARM1和PARM2则为运行被调试文件时所需要的命令参数。
在DEBUG程序调入后,将出现提示符“_”,此时就可用DEBUG命令来调试程序。
启动debug后,寄存器和标志位的状态:
1、段寄存器(CS,DS,ES和SS)被置到自由存储空间的底部,即第一段位于debug程序的末尾处。
2、指令指针(IP)置为0100H。
3、堆栈指针(SP)置为段的尾部或装入程序暂存区域的底部。
4、寄存器(AX,BX,CX,DX,BP,SI,DI)置为0。
若启动debug程序时指定了文件,则CX寄存器内装入文件长度(字节数),如果文件长度大于64K,则文件长度置于BX和CX中(高位在BX中)。
5、标志位为清除状态。
二、DEBUG的主要命令
1、显示存储单元的命令D(DUMP),格式为:
-D[address]或-D[range]
例如,按指定范围显示存储单元内容的方法为:
-d100120
18E4:
0100c70604023801c706-06020002c7060802G...8.G.....G...
18E4:
01100202bb0402e80200-CD20505156578B37..;..h..MPQVW.7
18E4:
01208B
其中0100至0120是DEBUG显示的存储单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
●输入命令-E(ENTER),有两种格式如下:
格式1:
可以用给定的内容来替代指定范围的存储单元内容。
命令格式为:
-Eaddress[list]
例如,-EDS:
100F3'XYZ'8D
其中F3,'X','Y','Z'和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:
0100到0104的原先的内容。
格式2:
则是采用逐个单元相继修改的方法。
命令格式为:
-Eaddress
例如,-EDS:
100
则可能显示为:
18E4:
010089.-
如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:
18E4:
010089.781B.-
这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。
●填写命令F(FILL),其格式为:
-Frangelist
例如:
-F4BA:
01005F3'XYZ'8D
使04BA:
0100~0104单元包含指定的五个字节的内容。
如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。
3、检查和修改寄存器内容的命令R(register),它有三种格式如下:
●显示CPU内所有寄存器内容和标志位状态,其格式为:
-R
例如,-r
AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000
DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC
18E4:
0100C70604023801MOVWORDPTR[0204],0138DS:
0204=0000
●显示和修改某个寄存器内容,其格式为:
-Rregistername
例如,键入
-RAX
系统将响应如下:
AXF1F4
:
即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:
-Rbx
BX0369
:
059F
则把BX寄存器的内容修改为059F。
●显示和修改标志位状态,命令格式为:
-RF系统将响应,如:
OVDNEINGZRACPECY-
此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:
OVDNEINGZRACPECY-PONZDINV
即可,可见键入的顺序可以是任意的。
PSW中标志位的符号表示
标志名
标志为1
标志为0
OF溢出(是/否)
OV
NV
DF方向(减量/增量)
DN
UP
IF中断(允许/关闭)
EI
DI
SF符号(正/负)
NG
PL
ZF零(是/否)
ZR
NZ
AF辅助进位(是/否)
AC
NA
PF奇偶(奇/偶)
PE
PO
CF进位(是/否)
CY
NC
4、运行命令G,其格式为:
-G[=address1][address2[address3…]
其中,地址1指定了运行的起始地址,如不指定则从当前的CS:
IP开始运行。
后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
5、跟踪命令T(Trace),有两种格式:
●逐条指令跟踪
-T[=address]
从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。
如未指定地址则从当前的CS:
IP开始执行。
●多条指令跟踪
-T[=address][value]
从指定地址起执行n条指令后停下来,n由value指定。
6、汇编命令A(Assemble),其格式为:
-A[address]
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
当键入A命令,自动产生程序所送内存单元的段地址和偏移地址,通过偏移地址可以看到每条指令占内存单元多少个字节。
其中送入的数据为十六进制数,不需要键入H表示数据为十六进制数。
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
必须注意:
DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。
(注:
使用A命令键入的程序,一般不使用标号及伪指令,仅允许使用DB、DW伪指令)。
7、反汇编命令U(Unassemble)有两种格式。
●从指定地址开始,反汇编32个字节,其格式为:
-U[address]
例如:
-u100
18E4:
0100C70604023801MOVWORDPTR[0204],0138
18E4:
0106C70606020002MOVWORDPTR[0206],0200
18E4:
010CC70606020202MOVWORDPTR[0208],0202
18E4:
0112BBO4O2MOVBX,0204
18E4:
0115E80200CALL011A
18E4:
0118CD20INT20
18E4:
011A50PUSHAX
18E4:
011B51PUSHCX
18E4:
011C56PUSHSI
18E4:
011D57PUSHDI
18E4:
011E8B37MOVSI,[BX]
如果地址被省略,则从上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 DEBUG 命令 及其 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)