导航:首页 > 程序命令 > debug汇编d命令

debug汇编d命令

发布时间:2025-07-31 19:40:25

‘壹’ 系统如何调用debug查看CPU汇编指令和内存

Debug是DOS(Disk Operating System,磁盘操作系统)、windows提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

查看更详细的介绍DEBUG网络
一般我们常用到的Debug参数:
r命令查看、修改CPU寄存器的内容;
d命令查看内存中的内容;
e命令改写内存中的内容;
u命令将内存中的机器指令翻译成汇编指令;
t命令执行一条机器指令;
a命令以汇编指令的格式在内存中写入一条机器指令。
打开界面如下:

将debug.exe拷贝到D盘(某盘根目录),在DOSBOX中输入“mount c D:\”命令(此命令输入后有“Drive C is mounted as local directory d:\”,再输入“c:”回车。然后输入debug,结果如下:
例如输入u可以查看系统的汇编指令,一直输入u会列出系统所有的汇编指令。如下图所示:

‘贰’ debug常用命令

以下是 Debug 命令列表:

? 显示 Debug 命令列表。
a 汇编 8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的 1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容
/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送 1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止 Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。

‘叁’ 电脑XP系统怎么使用debug查看内存和汇编指令

简单介绍下debug查看内存中的机器码,已经查看汇编指令的方法。
-r 参数用来查看CPU中寄存器的值,以及改变寄存器的值。
至于那些神马AX,BX,CX,DX的都不用说了,CS跟IP更不用说了,指向了要执行的下一条指令。
可以用-r cs或者-r ip来改变它们的值。如图:
这样我们就可以让CS:IP指向我们希望的指向内存地址,从而可能执行我们预先在该地址存放好的代码。
-D命令:用来查看内存中的值。比如:
如图:最左边的是内存的地址,用基地址:偏移量的方式给出,中间存放的是内存中的机器码,一行刚好15个字节,而最右边则是对这些数据敌对应的可显示的ASCII字符,对于没有的,则用.代替。所以如果想看一下,右边输出hello之类的 东西,则可以向指令里面写如这些字符的ASCII码。
-E命令:改写内存中的内容。上面已经说到了,下面我们来试试,用E改变CS:IP里面存放的指令。
如图:使用' ‘的格式就可以向里面输入字符了,右边出现了字符hello,所以我们可以认为中间的数据就是对应字符的ASCII码,我们之所以看到h是68,那是因为这是十六进制的数据,h真正的ASCII码应该是6*16+8=104,所以是吻合的。比如我们像内存里面写入:61(也就是6*16=97)
而0到9几个数字ASCII码的十六机制刚好是3x,也就是48+x.这点必须的搞清楚。
好,搞了这么长时间的E命令,我们在看看U命令,它用来查看机器码对应的汇编代码。比如:
可以看到十六进制的61对应的汇编还是61?所以我们可以用-e写入机器码,然后用-u来查看汇编指令。
-A:以汇编的形式向内存写入指令。比如:
还有一个命令就是-t,也就是执行,不多说了。

‘肆’ debug命令有什么作用如何使用

DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。x0dx0a一、DEBUG程序的调用x0dx0a 在DOS的提示符下,可键入命令:x0dx0a C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]x0dx0a 其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。x0dx0a 在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。x0dx0a二、DEBUG的主要命令x0dx0a 1、显示存储单元的命令D(DUMP),格式为:x0dx0a _D[address]或_D[range]x0dx0a 例如,按指定范围显示存储单元内容的方法为:x0dx0a -d100 120x0dx0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...x0dx0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.x0dx0a 7x0dx0a18E4:0120 8Bx0dx0a 其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。x0dx0a2、修改存储单元内容的命令有两种。x0dx0a ·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:x0dx0a -E address[list]x0dx0a例如,-E DS:100 F3'XYZƎDx0dx0a 其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。x0dx0a 第二种格式则是采用逐个单元相继修改的方法。命令格式为:x0dx0a -E addressx0dx0a例如,-E DS:100x0dx0a 则可能显示为:x0dx0a 18E4:0100 89.-x0dx0a 如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:x0dx0a 18E4:0100 89.78 1B.-x0dx0a 这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。x0dx0a ·填写命令F(FILL),其格式为:x0dx0a -F range listx0dx0a例如:-F 4BA:0100 5 F3'XYZƎDx0dx0a 使04BA:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。x0dx0a3)检查和修改寄存器内容的命令R(register),它有三种格式如下:x0dx0a ·显示CPU内所有寄存器内容和标志位状态,其格式为:x0dx0a -Rx0dx0a例如,-rx0dx0a AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000x0dx0a DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCx0dx0a 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000x0dx0a ·显示和修改某个寄存器内容,其格式为:x0dx0a -R register namex0dx0a例如,键入x0dx0a -R AXx0dx0a 系统将响应如下:x0dx0a AX F1F4x0dx0a :x0dx0a即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:x0dx0ax0dx0a -R bxx0dx0a BX 0369x0dx0a :059Fx0dx0a则把BX寄存器的内容修改为059F。x0dx0a ·显示和修改标志位状态,命令格式为:x0dx0a -RF系统将响应,如:x0dx0a OV DN EI NG ZR AC PE CY-x0dx0a 此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:x0dx0a OV DN EI NG ZR AC PE CY-PONZDINVx0dx0a 即可,可见键入的顺序可以是任意的。x0dx0a4)运行命令G,其格式为:x0dx0a -G[=address1][address2[address3?]]x0dx0a 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。x0dx0a5)跟踪命令T(Trace),有两种格式:x0dx0a ·逐条指令跟踪x0dx0a -T [=address]x0dx0a 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。x0dx0a ·多条指令跟踪x0dx0a -T [=address][value]x0dx0a 从指定地址起执行n条指令后停下来,n由value指定。x0dx0a6)汇编命令A(Assemble),其格式为:x0dx0a -A[address]x0dx0a 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。x0dx0a7)反汇编命令U(Unassemble)有两种格式。x0dx0a ·从指定地址开始,反汇编32个字节,其格式为:x0dx0a -U[address]x0dx0a例如:x0dx0a -u100x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a 18E4:0112 BBO4O2 MOV BX,0204x0dx0a 18E4:0115 E80200 CALL 011Ax0dx0a 18E4:0118 CD20 INT 20x0dx0a 18E4:011A 50 PUSH AXx0dx0a 18E4:011B 51 PUSH CXx0dx0a 18E4:011C 56 PUSH SIx0dx0a 18E4:011D 57 PUSH DIx0dx0a 18E4:011E 8B37 MOV SI,[BX]x0dx0a如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。x0dx0a ·对指定范围内的存储单元进行反汇编,格式为:x0dx0a -U[range]x0dx0a例如:x0dx0a -u100 10cx0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a或x0dx0a -u100 112 x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0ax0dx0a 可见这两种格式是等效的。x0dx0a8)命名命令N(Name),其格式为:x0dx0a -N filespecs [filespecs]x0dx0a命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以是:x0dx0a[d:][path] filename[.ext]x0dx0a例如,x0dx0a -N myprogx0dx0a -Lx0dx0a -x0dx0a可把文件myprog装入存储器。x0dx0a9)装入命令(Load),有两种功能。x0dx0a ·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:x0dx0a -L[address[drive sector sector]x0dx0a ·装入指定文件,其格式为:x0dx0a -L[address]x0dx0a此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。x0dx0a10)写命令W(Write),有两种功能。x0dx0a ·把数据写入磁盘的指定扇区。其格式为:x0dx0a -W address drive sector sectorx0dx0a ·把数据写入指定的文件中。其格式为:x0dx0a -W[address]x0dx0a此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。x0dx0a11)退出DEBUG命令Q(Quit),其格式为:x0dx0a -Qx0dx0a它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。

阅读全文

与debug汇编d命令相关的资料

热点内容
ug叶片四轴编程 浏览:779
程序员用程序介绍对象 浏览:477
玻璃球压口红解压 浏览:251
服务器如何改地图 浏览:289
txt怎么移动到另一个文件夹 浏览:335
什么app可以拍卖王者号 浏览:142
服务器如何登录用户名和密码 浏览:548
母亲节命令 浏览:762
java高并发pdf 浏览:523
超小型制冷压缩机 浏览:471
云服务器和虚拟主机赚钱 浏览:46
java文件重名 浏览:122
服务器ipmi参数是什么 浏览:763
做音频节目用什么app 浏览:975
电子书pdf免费下载 浏览:615
遗传算法的c语言实现 浏览:418
世嘉空调压缩机和什么车通用 浏览:377
程序员提高之路 浏览:798
gsensorandroid 浏览:978
linuxVIP配置 浏览:574