debug完整指令
DOS的debug命令大全
DOS的提示符下,可如下键入Debug启动调试程序:DEBUG [路径\文件名] [参数1] [参数2]Debug后可以不带文件名,仅运行Debug程序;需要时,再用N和L命令调入被调试程序。
命令中可以带有被调试程序的文件名,则运行Debug的同时,还将指定的程序调入主存;参数1/2是被调试程序所需要的参数。
在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符“-”,此时就可用Debug命令来调试程序。
∙运行Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部;IP=0100h;状态标志都是清0状态。
∙运行Debug程序时,如果带入的被调试程序扩展名不是.EXE,则BX.CX 包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。
∙运行Debug程序时,如果带入的被调试程序扩展名是.EXE,则需要重新定位。
此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。
DS=ES指向当前可用的主存段,BX.CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
Debug的命令都是一个字母,后跟一个或多个参数:字母 [参数]命令的使用中注意:①字母不分大小写;②只使用16进制数,没有后缀字母;③分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;④每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;⑤命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址 : 偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
汇编 DEBUG主要 命令 大全 最详细
DEBUG主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1.DEBUG程序的调用在DOS的提示符下,可键入命令:C:>DEBUG [d:][path][文件名][参数1][参数2]其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
2.DEBUG的主要命令⑴显示内存单元内容的命令D,格式为:-D [地址] 或-D [范围]例如,显示指定范围内存单元内容的方法为:-D 100 1FF18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G...18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。
这里没有指定段地址,D命令自动显示DS段的内容。
⑵修改内存单元内容的命令E,它有两种格式1)用给定内容代替指定范围的单元内容,格式为:-E 地址内容表例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。
2)逐个单元相继地修改,格式为:-E 地址例如:-E DS:10018E4:0100 89.78此命令是将0100单元内容89改为78。
78是程序员从键盘输入的。
程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。
⑶检查和修改寄存器内容的命令R,它有三种方式1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态-R该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。
汇编语言调试DEBUG命令详解
汇编语言调试DEBUG命令详解1、显示命令D① D [地址]② D [范围]如不指定范围,一次显示8行×16个字节。
-D ;默认段寄存器为DS,当前偏移地址-D DS:100 / -D CS:200-D 200:100-D 200;200为偏移地址,默认段寄存器DS-D DS:100 110/ -D 100 L 102.修改命令E① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。
DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。
② E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
-E DS:100 F3 ‘AB’ 8D。
3.添充命令FF 范围数据表;将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。
-F DS:0 L5 01,02,03,04,05-F DS:0 L5 01 02 03 04 05(空格分隔)-F DS:0 L5 FF ;5个字节重复使用FF4.显示修改寄存器命令RR;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。
显示标志时使用的符号:标志标志=1 标志=0OF OV NVDF DN UPIF EI DISF NG PLZF ZR NZAF AC NAPF PE POCF CY NC5.汇编命令AA [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。
注释:①在DEBUG下编写简单程序即使用A命令。
②每条指令后要按回车。
③不输入指令按回车,或按Ctrl+C结束汇编。
④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。
6.反汇编命令U① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。
DEBUG使用总结
一、DEBUG的主要命令A命令功能: 将助记符指令转换为机器指令码存储在指定的内存单元,即汇编过程格式1: Axxxx:0100 助记符指令1(ENTER)xxxx:xxxx 助记符指令2(ENTER)……xxxx:xxxx ENTER结束功能: 逐次将助记符指令对应的指令码存入从CS: 0100h起的连续的内存单元格式2:A 起始地址start-addrxxxx:0100 助记符指令1(ENTER)xxxx:xxxx 助记符指令2(ENTER)……xxxx:xxxx ENTER结束功能: 逐次将助记符指令对应的指令码存入从CS: star-addr起的连续的内存单元注: 指令中可以包含数据定义伪指令DB/DW等语句D命令功能: 查看指定内存单元的内容格式1: D [起始地址start-addr [L长度length]]功能: 显示从起始地址start-addr开始的length个字节,省略start-addr时从DS:0100h开始,省略长度length时默认值为80H(128)注: start-addr可以为偏移地址, 此时其默认的段基址为DS;也可以显式地按段地址:偏移地址格式指明完整的逻辑地址, 段地址不一定是段寄存器, 还可以是任意16位地址格式2: D[起始地址start-addr 终结地址end-addr]功能: 显示从起始地址start-addr开始到结束地址end-addr之间的字节注: start-addr和end-addr同时为偏移地址时默认的段基址为DS;start-addr采用段地址:偏移地址格式指明时, end-addr可以不必再指明段地址, 直接以偏移地址形式给出(start-addr和end-addr的段地址始终相同);当start-addr和end-addr的偏移地址相同时只显示该存储单元的字节.E命令功能: 修改指定内存单元的内容格式1: E 起始地址start-addr 字节数据1 字节数据2 … 字节数据n功能: 逐次用后面的字节数据修改从起始地址起的连续内存单元的内容格式2: E 起始地址start-addr(按ENTER)起始地址该内存单元的原值.待输入新值/空格键功能:在提示情况下逐个修改从起始地址start-addr开始的字节数据的值, 输入空格表示不做修改, 直至输入ENTER键结束G命令功能: 执行正在调试的汇编程序至指定的断点格式: G [start-addr] break-addr1[, break-addr2, …]功能:star-addr是指令码的起始偏移地址, break-addr是断点处的偏移地址, 段地址均为CS, 可以指定多个断点位置P命令功能: 执行INT, CALL, LOOP及重复串指令(REP等)直至下一条指令格式: P [start-addr] [n]功能:star-addr是待执行指令码的起始偏移地址, n是往下执行指令的条数Q命令功能: 退出debug格式: QR命令功能:显示和修改寄存器的内容格式1:R;显示所有寄存器的内容格式2: R 寄存器名;显示指定寄存器的值, 再按ENTER后键入数值可修改该寄存器的值格式3:R F;显示标志寄存器中各标志位的值标志位符号的意义如下:标志位符号意义标志位1标志位0OF 溢出(是/否) OV NVDF 方向(减/增) DN UPIF 中断(允许/关闭)EI DISF 符号(负/正) NG PLZF 零(是/否) ZR NZAF 辅助进位(是/否)AC NAPF 奇偶(偶/奇) PE POCF 进位(是/否) CY NCT命令功能: 以单步方式执行指定的指令代码格式1: T功能: 以单步方式执行从CS:IP开始的1条指令格式2: T 指令条数n功能: 以单步方式执行从CS:IP开始开始的n条指令U命令功能: 将内存单元的机器指令码转换为助记符指令,即反汇编过程格式1: U 起始地址start-addr功能: 将从start-addr开始的32个字节的指令码转换为助记符格式2: U 起始地址start-addr终结地址end-addr功能: 将从start-addr开始至终结地址end-addr之间的指令码转换为助记符二、DEBUG的相关说明1.debug默认所有的数值都是16进制的,且无需在最后添加后缀h;2.debug不区分字母的大小写;3.快捷键: F1键--逐个重复前一条命令的字符,F3键--重复前面整条命令;4.在dos系统中文件名的最大长度为8个字符,扩展名的最大长度为3个字符.在给asm文件命名时若超过8个字符,虽然可以编译生成obj文件但在连接时却生成不了exe文件,从而引发一些错误.注意文件名不要超过8个字符;5.对于32位指令,debug并不显示其助记符,而是会以DB开头显示,这与数据定义伪指令不同;6.在[EA](EA为常数)作操作数时(如MOV 寄存器,[EA]和MOV [EA],寄存器),若不在[EA]前加段前缀, 则debug会将其视为常数EA而非偏移地址,此时必须显式指明段前缀.三、用DEBUG调试程序1.顺序指令的调试调试程序的指令格式路径>debug filename.exe接着可用R指令查看各寄存器的值, 说明如下:1)CX的值为整个程序的指令码的字节总数;2)CS:IP指向第一条指令, (CS)=(DS)+10h, (IP)=0000h, 这是因为程序在内存中的起始地址是DS:0000h,但前256个字节单元用于PSP,所以从(CS+10h): 0000h才是程序的指令码.用U命令可以查看程序的助记符指令下面以程序test.asm为例说明, 其源代码如下:.model small.databuff db 2 dup(?).codestart:mov ax,@datamov ds,axmov ax,100mov bl,3div blmov buff,almov buff+1,ahmov ah,4chint 21hend start可知数据段的段基址为1450h, 而buff内存的偏移地址为0008h, 从144F:00~144F:16都是源程序的机器码, 共计17个字节再接着可用T命令单步调试每单步执行一条指令, 都会显示执行指令后的寄存器的内容注意IP的变化代表了上一条指令的机器码长度下面执行3条指令, 如下所示:可以看到进行除法运算后AL=21h=33(商), AH=1h(余数), 同时提示下一条指令为: MOV [0008H], AL这里偏移量0008h就是buff的偏移量, 同时右下角显示了该内存单元的当前内容为14h上面在执行完商和余数的MOV指令后, 用D指令查看buff及其后一个单元的内容, 分别是商21h及余数1h, 程序执行完全正确.最后在单步执行INT 21H指令时要用P指令, 此时会显示程序正常结束字样!2.循环结构的调试以testloop.asm为例:.model small.databuff dw ?.codestart:mov ax,@datamov ds,axmov cx,9mov ax,2again:add ax,axloop againmov buff,axmov ah,4chint 21hend start对循环结构的调试方法是:只需调试2~3次循环即可确定循环逻辑是否正确,接着可让程序直接执行到循环结束,然后再单步调试.让程序执行到某个断点位置: G命令断点偏移地址让程序执行到循环结束: 在调试LOOP指令时使用P命令。
DEBUG的命令及功能
DEBUG的命令及功能1. A(assemble):将指令转换成机器码并存储到内存中。
-A100:在内存地址100处开始输入指令。
2. D(dump):显示内存中的内容。
-D100200:显示内存地址从100到200的内容。
3. E(enter):修改内存中的数据。
-E1004000:在内存地址100处将数据修改为40。
4. G(go):执行程序。
-G100:从内存地址100处开始执行程序。
6. Q(quit):退出DEBUG。
-Q:退出DEBUG程序。
7. R(registers):显示和修改CPU寄存器的值。
-R:显示所有寄存器及其值。
-RAX1234:将AX寄存器的值修改为12348. T(trace):单步跟踪程序的执行。
-T:执行下一条指令并停止。
9. P(proceed):继续执行程序直至下一个断点或程序结束。
-P:继续执行程序。
10. U(unassemble):将机器码转换成指令。
-U100120:从内存地址100处开始将机器码转换成指令。
11. B(breakpoint):设置断点。
-B100:在内存地址100处设置断点。
12. S (search):在内存中指定的内容。
- S 100 200 "Hello": 在内存地址100到200之间字符串"Hello"。
13. L(load):加载程序到内存中。
-L100:从内存地址100处加载程序。
14. W(write):将内存中的数据写入文件。
- W 100 200 file.txt: 将内存地址100到200的数据写入到文件file.txt。
15. M(move):将内存中的数据移动到指定的地址。
-M100200300:将内存地址100到200的数据移动到地址300处。
16. X (execute):执行子程序。
-X100:从内存地址100处执行子程序。
17. H(help):显示DEBUG命令的帮助信息。
Debug命令详解
Debug命令详解Debug:A(汇编)Debug:C(比较)Debug:D(转储)Debug:E(键入)Debug:F(填充)Debug:G(转向)Debug:H(十六进制)Debug:I(输入)Debug:L(加载)Debug:M(移动)Debug:N(名称)Debug:O(输出)Debug:P(执行)Debug:Q(退出)Debug:R(寄存器)Debug:S(搜索)Debug:T(跟踪)Debug:U(反汇编)Debug:W(写入)Debug:XA(分配扩展内存)Debug:XD(释放扩展内存)Debug:XM(映射扩展内存页)Debug:XS(显示扩展内存状态)Debug命令详解Debug:A(汇编)直接将 8086/8087/8088 记忆码合并到内存。
该命令从汇编语言语句创建可执行的机器码。
所有数值都是十六进制格式,必须按一到四个字符输入这些数值。
在引用的操作代码(操作码)前指定前缀记忆码。
a [address]参数address指定键入汇编语言指令的位置。
对address 使用十六进制值,并键入不以“h”字符结尾的每个值。
如果不指定地址,a 将在它上次停止处开始汇编。
有关将数据输入到指定字节中的信息,请参看Debug E(键入)。
有关反汇编字节的信息,请参看Debug U(反汇编)说明使用记忆码段的替代记忆码为 cs:、ds:、es: 和 ss:。
远程返回的记忆码是 retf。
字符串处理的记忆码必须明确声明字符串大小。
例如,使用movsw 可以移动 16 位的字串,使用 movsb 可以移动 8 位字节串。
汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。
通过使用near 或far 前缀可以替代这样的跳转或调用,如下例所示:-a0100:05000100:0500 jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以将 near 前缀缩写为 ne。
DEBUG命令详解
DEBUG调试程序的使用一、DEBUG的启动在DOS系统提示符下,运行DEBUG命令即可启动。
命令格式:DEBUG [文件名全称]功能:启动DEBUG调试程序,并把指定名字的文件装载入内存,以供调试。
说明:启动DEBUG,实际就是让计算机执行DEBUG.EXE这个调试程序。
若该程序不在当前目录下,需要在命令中指定该程序所在的位置路径(包括其所在磁盘和文件夹)。
文件名全称指定要调试的文件名及其所在的位置路径。
若指定该选项,则在启动DEBUG时把该文件装载入内存,以供调试,该文件一般是EXE文件或COM文件。
若不指定该选项,则只启动DEBUG,不装载文件。
二、DEBUG常用命令1、D——显示内存单元内容的命令格式:D[开始地址[结束地址]]说明:①若“开始地址”和“结束地址”都指定,则显示指定地址范围内的内存单元的内容;若只指定“开始地址”,省略“结束地址”,则显示从“开始地址”开始的80H个字节的内容;若“开始地址”和“结束地址”都省略,则显示从上次显示的末字节单元的下一个字节开始的80H个字节的内容。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
2、E——输入内容(修改内存单元内容)命令格式:E开始地址[数据表列]说明:①若指定数据表列,则用数据表列中的数据存入从指定地址开始的内存单元中;若省略数据表列,则先显示指定开始地址的内存单元的内容,等待你修改。
若需要修改,输入其内容,按空格键显示、修改下一个内存单元内容;若不需要修改,直接按空格键显示、修改下一个内存单元内容,修改完成后按回车键。
②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。
3、F——填充内容(修改内存单元内容)命令格式:F开始地址结束地址数据表列说明:①用数据表列中的数据存入由开始地址和结束地址指定范围内的内存单元。
若数据表列中的数据少于指定地址范围的内存单元数,则循环使用表列中的数据存入内存单元,若数据表列中的数据多于指定地址范围的内存单元数,则多余的数据被忽略。
DEBUG各命令详细说明(很详细)
DEBUG各命令详细说明(很详细)2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。
当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。
关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。
R命令的使用R命令作用:观看和修改寄存器的值。
在提示符“-”下输入以下命令:R。
DEBUG将会显示出当前所有寄存器和标志位的状态。
接下来再输入命令RCX。
在提示符“:”后输入100。
该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。
)最后再执行R命令,观看修改后的寄存器值。
H命令的使用H命令作用:计算两个十六进制数的和与差。
在提示符“–”下输入以下命令:H 10 1。
观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。
计算结果均用十六进制形式表示。
D命令的使用D命令作用:显示内存区域的内容。
在提示符“–”下连续执行命令R、D、D。
观看命令执行结果。
前面已经介绍过了,命令R的作用是显示当前寄存器的值。
而命令D的作用是显示内存区域的内容,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值。
锐捷DEBUG命令参考
DEBUG调试命令锐捷网络交换机提供了丰富的debug(调试)指令,对于交换机所支持的各种协议和功能,基本上都提供了相应的调试功能,可以有效的帮助用户诊断和定位和排除在使用交换机中的各种问题。
下面列出了部分常用的debug 命令,与各协议和功能相关的更具体的debug命令和对其细节的注释,请参见本手册及命令参考手册中的各相关章节。
要使用debug功能,需要在特权用户模式下进行配置:命令功能Switch#debug ?显示所有可用的debug指令及简短的说明Switch #show debugging显示当前各个调试开关的状态Switch #debug all打开系统所有的调试开关Switch #undebug all关闭所有的调试开关Switch #debug aaa打开AAA调试开关Switch #debug acl打开ACL调试开关Switch #debug arp打开ARP调试开关Switch #debug dvmrp打开DVMRP调试开关Switch #debug filter打开过滤器调试开关Switch #debug igmp打开IGMP调试开关Switch #debug ip打开IP调试开关Switch #debug mstp打开MSTP调试开关Switch #debug multicast打开多播数据流调试开关Switch #debug pim打开PIM调试开关Switch #debug sys-guard打开sys-guard调试开关Switch #debug vlan打开VLAN调试开关首先、要打开日志功能:Switch(config) # logging on,其次、设置日志的级别为Debug:Switch(config) # logging monitor 7在Telnet客户端登陆模式下,缺省的debug调试信息不会发送到Telnet客户端,如果需要在Telnet客户端显示调试信息,则需要在该终端会话的特权用户模式下,执行如下命令:Switch #terminal monitor交换机包含有大量的调试命令,上表所列出的,仅仅是部分DEBUG的第一级命令而已,还有许多的DEBUG命令是有各自的子命令的,比如debug ip命令,后面还有许多的扩展选项:Switch #debug ip ?cache Debug IP cacheospf Debug IP OSPFpacket Debug IP packetpacket-event Debug IP packet-eventrip Debug IP RIP说明:打开调试开关,将会占用CPU资源,某些调试开关的打开,甚至会严重占用CPU资源,影响交换机运行效率,所以如果没有必要,请不要轻易打开调试开关,尤其慎用debug all 命令,在调试结束后,应注意关闭全部调试开关。
debug指令详解
debug指令详解一、DEBUG概述DEBUG是在DOS状态下面供程序员使用的程序调试工具。
它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。
DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。
此外,DEBUG还可以用于读写端口中的数值。
在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。
DEBUG能够处理的数据为两种: 十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。
在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。
如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。
前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。
在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。
DEBUG输入数据时有两种方法: 提示方法和非提示方法。
在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。
执行后可以看到该地址中已有的内容及一个冒号提示符。
此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。
在非提示方法下,输入保持数据的内存地址以及要输入的数据。
DEBUG的启动:进入DOS 状态下,键入DEBUG ,按ENTER键,如: C:\>DEBUG ,则屏幕显示:-符号“-”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。
DEBUG的退出:在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG返回DOS。
DEBUG的使用:在DEBUG的提示符后输入DEBUG命令,按ENTER键。
二、DEBUG 命令详解★A命令格式:A[地址]功能:将指令直接汇编成机器码输入到内存中。
DEBUG命令一览表
DEBUG 主要命令一览表 DEBUG [d:] [path] [.exe] [参数]2、DEBUG的主要命令(1)汇编命令A,格式为:-A[地址] 该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
(2)反汇编命令U,有两种格式:1)-U[地址] 该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围该命令对指定范围的内存单元进行反汇编,例如:-U 04BA:0100 0108或–U 04BA:0100 L9 此二命令是等效的。
(3)运行命令G,格式为:-G [=地址1][地址2[地址3。
]] 其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
(4)追踪命令T,有两种格式:1)逐条指令追踪:-T[=地址] 该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:-T[=地址][值] 该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(5)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围](6)修改内存单元内容的命令E,它有两种格式:1)用给定的内容代替指定范围的单元内容:-E地址内容表例如:-E 2000:0100 F3 “XYZ” 8D 其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2)逐个单元相继地修改:-E地址例如:-E 100:18E4:0100 89.78 此命令是将原100号单元的内容89改为78。
78是程序员键入的。
(7)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R R命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow(是/否)OVNV 方向Direction(减量/增量)DNUP 中断Interrupt(允许/屏蔽)EIDI 符号Sign(负/正)NGPL 零Zero(是/否)ZRNZ 辅助进位Auxiliary Carry (是/否)ACNA 奇偶Parity(偶/奇)PEPO 进位Carry(是/否)CYNC 2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如打入:-R AX 系统将响应如下:AX FIF4 :表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:-R BX BX 0369 :059F 则BX内容由0369改为059F 3)显示和修改标志位状态,命令格式为:-RF 系统将给出响应,如OV DN EI NG ZR AC PE CY- 这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
debug反汇编命令
debug反汇编命令DEBUG是Windows自带的调试工具一、A(assemble):汇编命令命令格式:a[<目标开始地址>]功能:从address地址开始写入汇编命令,回车结束此行,进入下一内存地址的编译。
如无address参数,则默认从cs:ip下一址开始编译。
例:a 1000:1000 从1000:1000地址开始输入汇编指令。
二、C(compare):比较命令命令格式:c<范围><地址范围>功能:比较指定内存地址(range address)的值。
例:c 100:0 100 10:0 比较从100:0开始的下100个地址与10:0开始的下100个地址。
三、D(dump):内存显示命令命令格式:d[<目标开始地址][目标范围>]功能:显示指定范围的内存值。
例:d 100:100 显示100:100地址及下个内存的值。
d 100 显示ds:100地址及下个内存的值。
四、e(enter):内存修改命令命令格式:e<目标地址><目标范围>功能:修改指定内存的值。
使用:空格编辑下一内存地址值,减号回到上一内存地址进行重编辑,回车完成编辑。
例:e 修改ds:ip的值;e 100 修改ds:100内存的值。
五、F(fill):内存填充命令命令格式:f<目标范围><填充值列表>功能:填充指定范围内存的指定值。
使用: range:内存地址范围。
list:填充值列表,多个值用空格隔开。
依次列入指定地址,地址数,填充值数,则填充从头开始循环填入指定内存。
例:f 100 l 100 'ab''cd' 在从ds:100开始的下100个内存中分别填入'ab''cd'。
六、G(go):运行命令命令格式:g[=开始地址][断点地址]功能:从指定地址开始运行。
可设定断点,DEBUG支持最多10个断点的设定。
DEBUG命令集锦
DEBUG是DOS操作系统中的一个外部命令,从DOS 1.0起就带有此命令。
利用此命令下的子命令,可以查看和修改寄存器、内存单元的内容;输入并执行汇编指令;可以查看(反汇编)代码段中的指令;可以对端口进行操作;可以对磁盘和磁盘文件进行操作;可以调试简单程序。
因此可见此命令的重要性了。
虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。
因此,现将学习汇编语言常用到的DEBUG的命令详细介绍一番,以让大家知道它的使用。
其他命令请参考其他详细资料。
1. A(汇编,ASSEMBLE)作用:直接将 8086/8087/8088 记忆码合并到内存(默认存到代码段中)。
该命令从汇编语言语句创建可执行的机器码。
所有数值都是十六进制格式,必须按一到四个字符输入这些数值。
在引用的操作代码(操作码)前指定前缀记忆码。
格式:A [ADDRESS]说明:ADDRESS指定键入汇编语言指令的位置。
对 ADDRESS 使用十六进制值,但键入时不以“H”字符结尾,如果十六进制数以字母开始,也不要在前面加“0”。
如果不指定地址,A 将在它上次停止处开始汇编。
例:在代码段中偏移地址为0200处存入指令MOV AX,BX (假定CS=0B49H)A 命令支持两个常用的伪指令:DB 操作码,将字节值直接汇编到内存,DW 操作码,将字值直接汇编到内存。
以下是两个伪指令的范例:A 命令支持所有形式的寻址方式和所有操作码同义词。
2. C(内存比较,COMPARE)作用:比较两个内存区域中的数据是否相同格式:C RANGE ADDRESS说明:①RANGE指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。
②ADDRESS指定要比较的第二个内存区域的起始地址。
如果内存第一个区域的内容和内存第二个区域的内容相同,DEBUG 将不显示任何内容而直接返回到DEBUG 提示符。
如果有差异,DEBUG 将按如下格式显示:ADDRESS1 BYTE1 BYTE2 ADDESS2例:比较DS:0000-DS:000F和ES:0000-ES:000F区域的数据以下命令具有相同效果:C 100,10F 300C 100 L10 300每个命令都对 100H 到 10FH 的内存数据块与 300H 到 30FH 的内存数据块进行比较。
debug命令
例如: R AX R F
3.2.15 搜索指定内存命令S
格式:S 〈地址范围〉 〈表〉 功能:在指定范围搜索表中内容,找到后显示表中元 素所在地址 例如: S CS:100 110 41 显示 04BA:0104 04BA:010D 表示在位移100H至110H间的上述两处有41H。又如: S CS:100L 11 41 ″AB″E 表示在当前代码段位移100H至111H处找连续4个字节内容 为41H、41H、42H、0EH的地址。
3.2.16 执行并显示系统环境命令T
格式:T [=〈地址〉] [〈条数〉] 功能:〈地址〉的缺省值是当前IP值,〈条数〉 的缺省值是一条。执行由指定地址起始的、 由〈条数〉指定的若干条命令。 例如: T 执行当前指令并显示状态 T 10 从当前指令始执行10H条指令
3.2.17 反汇编命令U
标志位 溢出标志OF 方向标志DF 中断标志IF 符号标志SF 零标志ZF 辅助标志AF 奇偶标志PF 进位标志CF 状 态 有/无 减/增 开/关 负/正 零/非 有/无 偶/奇 有/无 显示形式 OV/NV DN/UP EI/DI NG/PL ZR/NZ AC/NA PE/PO CY/NC
(2)显示指定存储器内容
3.2 DEBUG命令
DEBUG命令是在DEBUG提示符“-”下,由键 盘键入的。每条命令以单个字母的命令符开头, 然后是命令的操作参数,操作参数与操作参数 之间,用空格或逗号隔开,操作参数与命令符 之间用空格隔开,命令的结束符是回车键 (ENTER)。命令及参数的输入可以是大小写的 结 合 。 Crtl+Break 键 可 中 止 命 令 的 执 行 。 Crtl+Num Lock键可暂停屏幕卷动,按任一键 继续。所用数均为十六进制数,且不必写H。
debug GM命令集
d_c2scmd 10837 角色ID--角色透明
d_c2scmd 10840 模型ID--角色模型
d_c2scmd 10850 数值--设定角色声望值
d_c2scmd 10852--显示角色各类ID
d_c2scmd 10853--清除包裹所有物品
1:气血 2:真气 3:攻击 4:防御 5: 命中 6:躲闪 7:技能命中 8:技能躲闪 9:元力值 10:致命一击 11:致命伤害 12:减免致命一击 13:减免致命伤害 14:御仙 15:御魔 16:御佛 17:克仙 18:克魔 19:克佛 20:减免伤害 21:减免伤害% 22:眩晕抗性 23:定身抗性 24:魅惑抗性 25:虚弱抗性 26:昏睡抗性 27: 28: 29:气血增加 30:真气增加 31:攻击增加 32:防御增加 33:元神威能
d_c2scmd 10854--清除仓库密码
d_c2scmd 10855 10855--杀死地图所有怪物并获得经验
d_c2scmd 10856 数值--增加宠物经验
d_c2scmd 10865 1 数值--设定精灵随机属性点并归零属性加点
d_c2scmd 10865 2 数值--设定精灵剩余体力值
d_c2scmd 3022 + [物品id] :在包裹中添加一组物品(叠加上限)
d_c2scmd 2008 + [区域id] x z :手动转移地图
d_c2scmd 20000 :重启当前线
d_c2scmd 3022 + [物品id] :在包裹中添加一组物品(叠加上限)
其他GM命令详见 configs里console_cmd.txt
debug调试
DEBUG调试DEBUG.EXE是Windows自带的用于调试可执行程序的一个工具软件,可在命令提示符下计入,同时也是进行汇编语言程序设计的一种最有效的调试工具。
由于DEBUG调试程序可以对单条指令或几条指令组成指令序列进行汇编、执行,并可以观察到指令执行前后在寄存器或内存中的结果,并对指令中错误的使用予以拒绝汇编,对于初学指令的读者,通过DEBUG调试程序对指令的调试,不但对指令的功能,格式,影响FLAGS寄存器的状况有个直观的了解,还可以进一步了解数据在计算机中存放的格式、使用指令时应该注意的问题乃至计算机的工作原理。
1 DEBUG命令格式1.1 DEBUG调试程序的启动在命令提示符下,可键入如下命令启动DEBUG调试程序:DEBUG [路径\文件名] [参数1] [参数2][路径\文件名]是供DEBUG调试程序调试的程序名称及路径。
若Debug后不带文件名,仅运行Debug程序,在需要时,再用N和L命令调入被调试程序;若命令中带有被调试程序名,则运行Debug的同时,还将指定的程序调入主存;[参数1][参数2]被调试程序所需要的参数。
“DEBUG 文件名”方式的调试方式只启动DEBUG的调试方式在Debug程序调入后,根据有无被调试程序及其类型相应设置寄存器组的内容,发出Debug的提示符,此时就可用Debug来调试程序。
若启动DEBUG调试程序时,被调试程序扩展名是.EXE,则需要重新定位。
此时,CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段。
DS=ES指向当前可用的主存段,BXCX包含被调试文件大小字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。
如上图所示,被调试的程序名是XIANSHI.EXE,在DEBUG调试程序提示符“-”下键入R命令,是显示当前CPU中所有寄存器的值,可见,CS:IP=0B60H:0000H(DEBUG调试程序中所有的数据均为十六进制,但不加尾标H),SS:SP=0B4BH:0000H,是由被调试的程序XIANSHI.EXE决定的,分别指向代码段和堆栈段。
cmd对话框中Debug指令
一、DEBUG的主要指令:点击开始-->点运行-->在运行对话框中输入cmd-->在输入debug1、显示存储单元的指令D(DUMP)格式为:_D[address]或_D[range]例如按指定范围显示存储单元内容的方法为:-d100 12018E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进位表示每个位元群组,右边用ASCII字元表示每个位元群组,. 表示不可显示的字元。
这里没有指定段位址,D指令自动显示DS段的内容。
如果只指定首位址则显示从首位址开始的80个位元群组的内容。
如果完全没有指定位址则显示上一个D指令显示的最后一个单元后的内容。
2、修改存储单元内容的指令有两种。
☆输入指令E(ENTER)有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。
指令格式为:-E address [list]例如:-E DS:100 F3'XYZ'8D其中F3,'X','Y','Z'和各占一个位元群组,该指令可以用这五个位元群组来替代存储单元DS:0100到0104的原先的內容。
第二种格式则是采用逐个单元相继修改的方法。
指令格式为:-E address例如:-E DS:100则可能显示为:18E4:0100 89.-如果需要把该单元的内容修改为78,则使用者可以直接键入78,再按"空格"键可接著显示下一個單元的內容,如下:18E4:0100 89.78 1B.-这样使用者可以不断修改相继单元的内容直到用ENTER键结束该指令为止。
DEBUG命令大全
DEBUG在每个人的机器里都会有,只是很多人对它都很陌生,不要小看它,对你的破解会很有帮助的。
如你掌握了它的用法,对你的日常使用及维护工作会带来很大的方便,下面介绍一些它的基本指令用法:指令格式功能备注A A [记忆体位址] 组译汇编语言指令A 100C C [区段1] [区段范围] [区段2] 将两块内存作比较C 100 L20 200D D [记忆体拉址] 显示记忆体的内容D 100E E [记忆体位址] 编辑记忆体资料E 100F F [指定区段范围] 填充指定内存区块内容F 100 L10 90G G [区段:区址]带有任选断点执行G 100H H [运算子] [运算子]十六进制加减运算H 44 33I I [端口]读/显示输入字节L L [记忆位址]或[磁碟,磁轨,磁区] 装入文件或磁区L 100 2 1 2M M [区段范围] [记忆体位址]传送内存区块M 100 L10 110N N [档案名称] 定义文件及参量N O O [端口位址] 输出字节到端口P P [区段:区址]在下一指令上停止P 2Q Q 退出DEBUG 界面QR R [寄存器] 显示修改寄存器/标志R AXS S [记忆区段范围] 对字符进行检索S 100 L70 'j'T T [=记忆区段]或[数值范围]单步追踪TU U [记忆位址] 对指令进行反汇编U 100W W [记忆区段]或[指定范围] 写入文件或磁盘扇区W 100 0 1 1下面对一些常用指令进行详细剖析:A (Assemble)汇编指令1、输入汇编语句被汇编到内存的指定区段,此区段在开始时用A address 指定。
2、所有语句输入完成后,按ENTER 键返回。
3、完成输入后,可以用U 命令观看它的机械码。
D (Dump)显示命令1、从指定的地址开始显示内容,如果没有指定地址,则从前一个D命令继续显示。
2、如果没指定地址并是第一次,则从DS:100 处开始显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的相邻的10个存储单元中的无符号数相加。
(3个小题任选2个)
实验数据记录注意事项:
1、实验报告第三页:表格中标志位与计算机 自动给出的不是一一对应的,要求记录1/0
2、实验报告第四、五页:列出调试运行后的程序清单
因为行汇编不识别标号,所以:用行汇编运行的程 序中没有行号,转移指令处是绝对地址。
验收内容:
程序结束
-G =200 260
;从指定200H地址开始执行, 遇到断点 260H停止,显示寄存器和标志寄存器的 内容。
⑸E(检查修改内存单元内容): 默认寄存器是DS,格式是:
-E[ ADDRESS]
-E 105 13 3A 21
;从DS:105H开始输入3个字节的内容
-E CS:211 21 2A
方式,为使用者提供了非常有效的调试
手段。在DEBUG下所有输入的数据都是 十六进制,所以不需要后面加H。并且
不区分大、小写字母。
DEBUG的主要命令 (1) U(反汇编):将机器指令进行反汇 编,默认的寄存器是CS:IP,从指定地 址开始反汇编32个字节,它的格式是: -U段地址:偏移地址 -U段地址:偏移地址1 偏移地址2 -U CS:100 ;反汇编开始于CS:100 -U 100 150 ;反汇编从100H 到 150H的内容。
⑵ P/T(跟踪):以单步方式执行程 序
-T =段地址:偏移地址 -T ;执行一条指令。
-T 10
-T=3 2
;执行下面10H(16)
条指令。 ;从指定IP=0003开始,
执行下面2条指令.
⑶A (把符号指令汇编成机器码): -A
100 ;从指定地址100H开始
汇编,结果写入内存。
-A
;不指定地址,则从上 次 A命令开始汇编。
-RDS
-RF
;显示并可修改DS的内容。
(8) Q(退出):
退出DEBUG,该操作不保护文件。
-Q
标志位:
OF:溢出标志
DF:方向标志
“1”
—— OV溢出,
—— DN减量,
“0”
NV没溢出
UP增量
IF:中断允许标志 —— EI允许,
SF:符号标志 —— NG负数,
DI禁止
PL正数
ZF:“0”标志
AF:半进位标志
要求:1、实验指导书及实验报告上的预习内容 2、预习验收时要提供设计的源程序磁盘或笔写程序
实验一 运用DEBUG调试工具编程 实验目的:
1、掌握DEBUG下的主要命令及在DEBUG下
编写简单程序、调试程序的方法;
2、理解CPU各种寄存器的作用: CS、IP、AX、、、、;
3、理解那些指令执行时对标志位有影响
DEBUG的功能:
DEBUG是专门为汇编语言设计的调 试工具软件,它通过单步、设置断点等
在A命令下不能使用字段名,A命
令只识别指令和DB、DW伪指令 。
⑶A : -A 100 ; 087D:0100 MOV AL, 4E 087D:0102 ADD AL, 2D 087D:0104 MOV AL, 4C 087D:0106 INT 21H
⑷G (运行可执行程序):
-G=段地址:偏移地址 -G ;从程序当前位置执行到
1、用T命令执行完程序最后一条指令处的界面:
-T =段地址:0 AX = BX = 、、、、、、D I = DS = 、、、、 IP = -T 、、、T AX = BX = 、、、、、、D I = DS = 、、、、IP =程序结束处偏移地址
2、用G命令设断点执行程序前后数据区内容: — D数据段段地址:偏移地址↙ (执行前数据区内容) 数据段段地址:0000 XX XX XX、、、、、、XX 数据段段地址:0010 XX XX XX、、、、、、XX — G= 代码段段地址:0 程序结束处偏移地址↙ AX = BX = 、、、、、、D I = DS = 、、、、IP =程序结束处偏移地址 — D数据段段地址:偏移地址↙ (执行后数据区内容) 数据段段地址:0000 XX XX XX、、、、、、XX 数据段段地址:0010 XX XX XX、、、、、、XX 下次课预习内容:顺序结构程序设计
—— ZR为“0”,
NZ不为“0”
—— AC有半进位,NA无半进位
PF:奇偶标志
CF:进位标志
—— PE偶数,
—— CY有进位,
PO奇数
NC无进位
实验内容:
1、用AL寄存器、MOV、ADD、SUB编程完
成算术运算(4个小题任选2个)。
2、用直接寻址、寄存器间接寻址、变址寻址
三种方法编程,完成从偏移地址3000H开始
ng‟
;输入从DS:110H开始的字符串
⑹ D(显示存储器的内容):
默认寄存器是DS,格式是: -D段地址:偏移地址
;显示80H个字节的内容。
-D
显示从上一次结束处开始的80H个字节 的内容。
⑺ R(显示修改寄存器内容) -R ;显示所有寄存器内容。 ;显示并可修改标志寄存器 内容。