DEBUG 教程主要命令1Word文档下载推荐.docx

上传人:b****3 文档编号:15705460 上传时间:2022-11-15 格式:DOCX 页数:14 大小:23.69KB
下载 相关 举报
DEBUG 教程主要命令1Word文档下载推荐.docx_第1页
第1页 / 共14页
DEBUG 教程主要命令1Word文档下载推荐.docx_第2页
第2页 / 共14页
DEBUG 教程主要命令1Word文档下载推荐.docx_第3页
第3页 / 共14页
DEBUG 教程主要命令1Word文档下载推荐.docx_第4页
第4页 / 共14页
DEBUG 教程主要命令1Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

DEBUG 教程主要命令1Word文档下载推荐.docx

《DEBUG 教程主要命令1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DEBUG 教程主要命令1Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

DEBUG 教程主要命令1Word文档下载推荐.docx

是DOS查找DEBUG文件的一个子目录串表示的路径。

若未指定,DOS将使用当前工作目录。

d:

是DEBUG将要调试的文件所在的磁盘驱动器。

p:

是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。

filename[.ext]是DEBUG将要调试的文件名。

param是将被调试的程序(或文件)的命令行参数。

附:

DEBUG所完成的初始化动作,假定文件名没有,启动DEBUG:

段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。

指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。

堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。

其余通用寄存器均置为0,标志寄存器置为下述状态。

NVUPEIPLNENAPONC

如果DEBUG命令行含有文件名,段寄存器DS和ES指向PSP。

寄存器BX和CX含有程序长度。

DEBUG使用单字符命令:

命令格式命令格式

汇编A[地址]命名N[设备:

][路径]文件名[.扩展名]

比较C[范围]输出O口地址

转出D[范围]或[地址]继续执行P[=地址][值]

键入E地址[表]退出Q

填入F范围表寄存器R[寄存器]

执行G[=地址][地址[地址...]]搜索S范围表

十六进制H值值跟踪T[=地址]或[范围]

输入I口地址反汇编U[地址]或[范围]

装入L[地址][设备扇区,扇区]]写W[地址[设备扇区,扇区]]

移动M范围地址  

这些DEBUG命令主要参考清华大学计算机系列教材《IBM-C汇编语言程序设计》一书。

☆显示存储单元的命令D(DEBUG),格式为:

-D[address]或

-D[range]

例如,按指定范围显示存储单元内容的方法为:

-D100120

067C:

0100C7D70D0A32333334-D5C5B4C63010420C....2334....0.B.

01100341424344454647-48494A4B4C4D4E4F.ABCDEFGHIJKLMNO

01208B

其中0100至0120是DEBUG显示的单元内容。

左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,“.”表示不可显示的字符。

这里没有指定段地址,D命令自动显示DS段的内容。

如果只指定首地址,则显示从首地址开始的80个字节的内容。

如果完全没有指定地址,则显示上一个D命令的最后一个单元的内容。

这里顺便提一下存储器及其地址的分段。

计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数:

0或1。

每8位组成一个字节,位编号如下所示:

76543210

正当MS-DOS盛行的时候,PC机的字长为16位,由2个字节组成,位编号如下所示:

字1514131211109876543210

字节7654321076543210

高位字节MSB低位字节LSB

在存储器里以字节为单位存储信息。

为了正确地存放或取得信息,每一个字节单元给以一个存储器地址。

地址从0开始编号,顺序地每次加1。

在机器里,地址也是用二进制数来表示的。

它是无符号整数,书写格式为十六进制。

16位二进制可以表示2的16次方个字节单元的地址,它可表示的地址范围应该是0-65535。

为方便,存储器的容量以2的10次方=1024为基本单位,称为1K。

这样,65536个字节单元的存储容量就是64K,其地址编号的范围用16进制数表示为0-FFFFH。

如下所示。

0000,0001,0002,……,……,……0009,000A,000B,000C,000D,000E,000F,

0010,0011,0012,……,……,……0019,001A,001B,001C,001D,001E,001F,

0020,0021,0022,……,……,……0029,002A,002B,002C,002D,002E,002F,

……

……

FFE0,FFE1,FFE2,……,……FFE9,FFEA,FFEB,FFEC,FFED,FFEE,FFEF,

FFF0,FFF1,FFF2,……,……FFF9,FFFA,FFFB,FFFC,FFFD,FFFE,FFFF。

一个字存入存储器要占有相继的二个字节,存放时,低位字节存入低地址,高位字节存入高地址,以相反的次序存入的。

存储器的特点:

它的内容是取之不尽的。

从某个单元取出其内容后,该单元仍然保存着原来的内容不变,可以重复取出,只有存入新的信息之后,原来保存的内容自动丢失。

存储器地址的分段:

前面已经提到16位字长的机器可以访问最大存储空间为64K字节,而PC机的最大存储容量为1M(原MS-DOS操作系统下)。

要访问1M字节空间的存储器必须有20位地址,用16进制数表示1M字节的地址范围应该为00000-FFFFF。

在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。

CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取得(或存入)该单元的内容。

20位物理地址由16位段地址和16位偏移地址组成,段地址是指每一段的起始地址,由于它必须是小段的首地址,所以其低4位一定是0,这样就可以规定段地址只取段起始地址的高16位值。

偏移地址则是指在段内相对于段起始地址的偏移值。

这样,物理地址的计算方法如下:

把段地址左移4位再加上偏移地址值就形成物理地址。

或写成:

16dX段地址+偏移地址=物理地址

每个存储单元只有唯一的物理地址,但它却可由不同的段地址和不同的偏移地址组成。

在PC机中,有四个专门存放段地址的寄存器,称为段寄存器。

它们是代码段CS(CodeSegment)、数据段DS(DataSegment)、堆栈段SS(StackSegment)和附加段ES(ExtraSegment)寄存器。

每个段寄存器可以确定一个段的起始地址,而这些段则各有各的用途。

代码段是存放当前正在运行的程序。

数据段存放当前运行程序所用的数据,如果程序中使用了串处理指令,则其源操作数也存放在数据段中。

堆栈段定义了堆栈的所在区域,堆栈是一种数据结构,它是一个比较特殊的数据段。

附加段是附加的数据段,它是一个辅助的数据区,也是串处理指令的目的操作数存放区。

还有四个通用数据寄存器AX、BX、CX、DX;

四个指针及变址寄存器SP、BP、SI、DI;

控制寄存器包括IP(指令指针寄存器)和PSW程序状态字寄存器。

这些将专门开辟一页详加介绍。

☆修改存储单元内容的命令有两种

输入命令E(Enter),有两种格式如下:

第一种格式可以用给定的内容表来替代指定范围的存储单元内容。

命令格式为:

-Eaddress[list]

例如,-EDS:

100F3'

XYZ'

8D

其中F3,‘X’,‘Y’,‘Z’和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:

0100到0104的原先的内容。

第二种格式则是采用逐个单元相继修改的方法。

-Eaddress

例如,-ECS:

100

则可能显示为:

18E4:

010089.-

如果需要把该单元的内容修改为78,则可以直接键入78,再按空格键可接着显示下一个单元的内容,这样可以不断修改相继单元的内容,直到Enter键结束该命令为止。

填写命令F(Fill),其格式为:

-Frangelist

例如,-F4BA:

01005F3'

使04BA:

0100-0104单元包含指定的五个字节的内容。

如果list中的字节数超过指定的范围,则忽略超过的项;

如果list的字节数小于指定范围,则重复使用list填入,直到填满指定的所有单元为止。

☆检查和修改寄存器内容的命令R(Register),它有三种格式如下:

显示CPU内所有寄存器内容和标志位状态,其格式为:

-R

例如,

-r

AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000

DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC

0100C70604023801MOVWORDPTR[0204],0138DS:

0204=0000

其中标志位状态的含义可见下表:

标志位标志为1标志为0标志名

OFOVNV溢出(是/否)

DFDNUP方向(减量/增量)

IFEIDI中断(允许/关闭)

SFNGPL符号(负/正)

ZFZRNZ零(是/否)

AFACNA辅助进位(是/否)

PFPEPO奇偶(偶/奇)

CFCYNC进位(是/否)

显示和修改某个寄存器内容,其格式为:

-Rregistername

例如,键入

-rax

系统将响应如下:

AXF1F4

即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如:

-rbx

BX0369

059F

则把BX寄存器的当前内容修改为059F。

显示和修改标志位状态,命令格式为:

-RF

系统将响应,如:

OVDNEINGZRACPECY-

此时如不修改其内容可按Enter键,否则,建入欲修改的内容,如:

OVDNEINGZRACPECY-PONZDINV

即可,键入的顺序是任意的。

☆运行命令G(Go),其格式为:

-G[=address1][address2[address3...]]

其中,地址1指定了运行的起始地址,如不指定则从当前的CS:

IP开始运行。

后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

☆跟踪命令T(Trace),有两种格式:

逐条指令跟踪

-T[=address]

从指定地址起执行一条指令后停下来,显示所有寄存器内空及标志位的值。

如未指定则从当前的CS:

IP开始执行。

多要指令跟踪

-T[=address][value]

从指定地址起执行n条指令后停下来,n由value指定。

☆汇编命令A(Assemble),其格式为:

-A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1