ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:22.57KB ,
资源ID:5404022      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5404022.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DebugPC之开山老祖.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DebugPC之开山老祖.docx

1、DebugPC之开山老祖DebugPC之开山老祖Debug 原意是杀虫子。这里是机器调试工具。 其实,Debug的由来,还有一则趣闻,在早期美国的一计算机房中,科学家正在紧张的工作。同时,许多台大型的计算机也在不停的运行着。大概是由于,机器过热,引来许的小虫子,以至于,计算机无法正常运行。科学们,只好停下来,捉虫子.虫子捉完了,计算机运行也正常了,后来,这个名词就沿用至今了. 虽然,现在好的软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好!接下来,我们就一起学习Debug在各方面的运用吧!(在杀毒、加解密、系统.)下面我和大家一起学习一些,Debug的用法,虽然,现在好的

2、软件越来越多了,但是有些,我们只需动手,用Debug就可解决,且快而好! Debug常用命令集 名称 解释 格式 a (Assemble) 逐行汇编 a address c (Compare) 比较两内存块 c range address d (Dump) 内存16进制显示 d address或 d range e (Enter) 修改内存字节 e address list f (fin) 预置一段内存 f range list g (Go) 执行程序 g =addressaddress. h (Hexavithmetic) 制算术运算 h value value i (Input) 从指定端

3、口地址输入 i pataddress l (Load) 读盘 l address driver seetor m (Move) 内存块传送 m range address n (Name) 置文件名 n filespec filespec. o (Output) 从指定端口地址输出 o portadress byte q (Quit) 结束 q r (Register) 显示和修改寄存器 r register name s (Search) 查找字节串 s range list t (Trace) 跟踪执行 t =address value u (Unassemble) 反汇编 u addre

4、ss 或range w (Write) 存盘 w addressdriver sector secnum ? 联机帮助 ? debug小汇编a命令 debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。 编一些小程序比汇编要来得方便,快洁。 在Debug中,中断是非常有用的,首先,让我们先了解一下中断。 所谓中断,其实,就是,当你做某事时,有人过来找你有其他事,你先放下手中的事(计算机中,称为保护现场) ,再去与叫你的那个人办事去,等完了,你又回,接着做刚才的事。这是个很通俗的讲法。 计算机在运行时,也会出现这种情况,我们叫之中断。 下面是他的一些常用中断向量的入口值详解:(记住哦

5、,很用的.呵呵) IBM PC 中断int10 ooH 屏幕方式设置 入口:AH0,AL显示方式代码(06) 0:40*25黑白 1:40*25彩色 2:80*25黑白 3:80*25彩色文本 4:320*200彩色 5:320*200黑白 6:640*200黑白图形模式 7:80*25单色字符(单色显示器) 0BH色彩设置 入口:AH0B,BL0设背景色,BH015BL1设调色码,BH01 0CH写图形点 入口:AH0C,CX:DX列号:行号,AL颜色 ODH读图形点 入口:AH0D,CX:DX列号:行号 返回:AL颜色 0EH在当前页、当前光标处写字符 入口:AH0E,AL字符的ASCII

6、码,BL前景色 OFH显示器状态 入口:AH0F 返回:AL当前显示器方式,AH屏幕列数,BH当前页号 01H光标设置 入口:AH1,CH光标起始行号(000C),CL光标结束行号(000C) 注:CHCL 02H光标定位 入口:AH2,BH页号,DH:DL起始行:列 03H读光标位置 入口:AH3,BH页号。 返回:DH:DL起始行:列 06H窗口上卷 入品:AH6,AL窗口上卷行数,CH:CLDH:DL窗口坐标 注:AL0卷动整个窗口 07H窗口下卷 入口:AH7,AL窗口下卷行数,CH:CLDH:DL窗口坐标 08H读当前光标处字符和属性 入口:AH8,BH页号。 返回:AH:AL字符的

7、颜色:字符的ASCII码 注:颜色代码见下对照表 09H:在当前光标处写字符和属性 注:光标不下移 入口:AH9,BH页号,BL:AL字符的颜色:字符的ASCII码,CX重复次数 1 2 3 4 5 6 7 8 BL R G B I R G B 闪烁字符底色加亮字符颜色 中断向量号表 中断号 解释 中断号 解释 0 除数为0错 19 引导装入程序 1 音步中断 1A 日时调用 2 不可屏蔽中断NMI 1B 键盘阻断时得到控制权 3 断电中断(CCH) 1C 时钟中断时得到控制权 4 溢出中断 1D 指向CRT初始参数表 5 屏幕打印中断 1E 指向盒带参数表 6-7 保留 1F 1KB图形模式

8、 8 计时器中断(18.2秒) 20 结束DOS程序 9 键盘中断 21 DOS功能调用 A-D 保留 22 结束地址(建义用EXEC) E 软盘机中断 23 DOS Crtl-Break退出地址 F 保留 24 DOS致命错向量 10 屏幕I/O调用 25 DOS绝对磁盘读 11 设备检查调用 26 DOS绝对磁盘写 12 存储器检查调用 27 结束程序并驻留(建义用31h) 13 软盘机I/O调用 28-3F DOS保留 14 RS-233I/O调用 40-7F 未用 15 盒带机I/O调用 80-85 BASIC保留 16 键盘I/O调用 86-F0 BASIC解释程序用 17 打印机I

9、/O调用 F1-FF 未用 18 ROMBASIC入口 指令名详解 call 指令(过程调用)(控制指令长转移) 详解: 段内直接调用 段内间接调用(寄存器) 段内间接调用(存储器) 段间直接调用 段间间接调用 指令名 jmp 指令(无条件转移指令)(控制指令长转移) 详解: 段内直接跳转 短段内直接跳转 段内间接跳转(寄存器) 段内间接跳转(存储器) 段间直接跳转 段间间接跳转 指令名 ret 指令(过程返回)(控制指令长转移) 详解: 段内返回 段内返回立即数加于sp 段间返回 段间返回立即数加于sp na/jnbe 指令(控制指令短转移) 不小于或不等于时转移 jae/jnb 指令 (控

10、制指令短转移) 大于或等于时转移 jb/jnae 指令 (控制指令短转移) 小于转移 jbe/jna 指令 (控制指令短转移) 小于或等于转移 jg/jnle 指令(控制指令短转移) 大于转移 jge/jnl 指令 (控制指令短转移) 大于或等于转移 jl/jnge 指令 (控制指令短转移) 小于转移 jle/jng 指令 (控制指令短转移) 小于或等于转移 je/jz 指令 (控制指令短转移) 等于转移 jne/jnz 指令 (控制指令短转移) 不等于转移 jc 指令 (控制指令短转移) 有进位时转移 jnc 指令 (控制指令短转移) 列进位时转移 jno 指令 (控制指令短转移) 不溢出时

11、转移 jnp/jpo 指令 (控制指令短转移) 奇偶性为奇数时转移 jns 指令 (控制指令短转移) 符号位为0转移 jo 指令 (控制指令短转移) 溢出转移 jp/jpe 指令 (控制指令短转移) 奇偶性为偶数时转移 js 指令 (控制指令短转移) 符号位为1时转移 loop 指令 (循环控制指令短转移) cx不为0时循环 loope/loopz 指令 (循环控制指令短转移) cx 不为0且标志 z1 时循环 loopne/loopnz 指令 (循环控制指令短转移) cx 不为0且标志 z=0 时循环 jcxz 指令 (循环控制指令短转移) cx 为0时转移 int 指令 (中断指令) 中断

12、指令(后详解) into 指令 (中断指令) 溢出中断 iret 指令 (中断指令) 中断返回 指令名 shl 指令(逻辑左移) sal 指令(算术左移) shr 指令(逻辑右移) sar 指令(算术右移) 寄存器,1 rol 指令(循环左移) 寄存器,cl ror 指令(循环右移) 存储器,1 rcl 指令(通过进位的循环左移)存储器,cl rcr 指令(通过进位的循环右移)(逻辑运算) not 指令(取反运算)寄存器求反 (逻辑运算)存储器求反 and 指令(与运算) (逻辑运算) 寄存器 and 寄存器寄存器 寄存器 and 存储器寄存器 存储器 and 寄存器存储器 立即数 and 存

13、储器存储器 立即数 and 累加器累加器 or 指令(或运算)(逻辑运算) 寄存器 or 寄存器寄存器 寄存器 or 存储器寄存器 存储器 or 寄存器存储器 立即数 or 存储器存储器 立即数 or 累加器累加器 test 指令(测试) (逻辑运算) 寄存器 test 寄存器 寄存器 test 存储器 寄存器 test 立即数 存储器 test 立即数 累加器 test 立即数 movs 指令(串传送)(字符串操作指令) 单个传送 重复传送 cmps 指令(串比较) (字符串操作指令) 单个比较 重复比较 scas指令(串扫描)(字符串操作指令) 单个搜索 重复搜索 lods 指令(装入串)

14、 (字符串操作指令) 单个装载 重复装载 stos 指令(保存串) (字符串操作指令) 单个存储 重复存储 mov 指令(传送字或字节)(数据传送命令) 寄存器与寄存器间传送 存储器与寄存器间传送 立即数传送给存储器 立即数传送给寄存器 存储器传送给累加器 累加器传送存储器 寄存器传送给段寄存器 存储器传送给段寄存器 段寄存器传送给寄存器 段寄存器传送给存储存器 pop 指令(把字弹出堆栈) (数据传送命令) push 指令(把字压入堆栈) 存储器 寄存器 段寄器 xchg 指令(交换字或字节) (数据传送命令) 寄存器与寄存器交换 存储器与寄存器交换 寄存器与累加器交换 in 指令(端口输入

15、) (数据传送命令) 直接输入 间接输入 out 指令(端口输出) (数据传送指令) 直接输出 间接输出 add 指令(加法)(算术指令) adc 指令(带进位加法) 寄存器寄存器寄存器 寄存器存储器寄存器 存储器寄存器存储器 立即数存储器存储器 立即数累加器累加器 inc 指令(加1)(算术指令) 存储器增量 寄存器增量 sub 指令(减法) (算术指令) sbb 指令(带借位减法) 寄存器寄存器寄存器 寄存器存储器寄存器 存储器寄存器存储器 立即数存储器存储器 立即数累加器累加器 dec 指令(减1)(算术指令) 存储器减量 寄存器减量 nec 指令(求反,以0减之) 寄存器求补 存储器求

16、补 cmp 指令(比较)(算术指令) 寄存器与寄存器比较 寄存器与存储器比较 寄存器与立即数比较 存储器与立即数比较 累加器与立即数比较 mul 指令(无符号乘法) (算术指令) imul 指令(整数乘法) 与8位寄存器相乘 与16位寄存器相乘 与8位存储单元相乘 与16位存储单元相乘 div 指令(无符号除法)(算术指令) idiv 指令(整数除法) 被8位寄存器除 被16位寄存器除 被8位存储单元除 被16位存储单元除 DEBUG主要命令 DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 一、DEBUG程序的调用 在DOS的提示

17、符下,可键入命令: C:DEBUG D:PATHFILENAME.EXTPARM1PARM2 其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。 在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。 二、DEBUG的主要命令 1、显示存储单元的命令D(DUMP),格式为: _Daddress或_Drange 例

18、如,按指定范围显示存储单元内容的方法为: -d100 120 18E4: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. 7 18E4:0120 8B 其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内

19、容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。 2、修改存储单元内容的命令有两种。 输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为: -E address list 例如,-E DS:100 F3XYZ8D 其中F3,X,Y,Z和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。 第二种格式则是采用逐个单元相继修改的方法。命令格式为: -E address 例如,-E DS:100 则可能显示为: 18E4:0100 89.- 如果需要把该单元的内容修改为78,则用户

20、可以直接键入78,再按空格键可接着显示下一个单元的内容,如下: 18E4:0100 89.78 1B.- 这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。 填写命令F(FILL),其格式为: -F range list 例如:-F 4BA:0100 5 F3XYZ8D 使04BA:01000104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。 3)检查和修改寄存器内容的命令R(register),它有三种格式如下: 显示CPU内所有寄存器内容和标

21、志位状态,其格式为: -R 例如,-r AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 MOV WORD PTR 0204,0138 DS:0204=0000 显示和修改某个寄存器内容,其格式为: -R register name 例如,键入 -R AX 系统将响应如下: AX F1F4 : 即AX寄存器的当前内容为F1F4,如不修改则按ENT

22、ER键,否则,可键入欲修改的内容,如: -R bx BX 0369 :059F 则把BX寄存器的内容修改为059F。 显示和修改标志位状态,命令格式为: -RF系统将响应,如: OV DN EI NG ZR AC PE CY- 此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如: OV DN EI NG ZR AC PE CY-PONZDINV 即可,可见键入的顺序可以是任意的。 4)运行命令G,其格式为: -G=address1address2address3 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,

23、就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。 5)跟踪命令T(Trace),有两种格式: 逐条指令跟踪 -T =address 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。 多条指令跟踪 -T =addressvalue 从指定地址起执行n条指令后停下来,n由value指定。 6)汇编命令A(Assemble),其格式为: -Aaddress 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,

24、则其后应加以说明,如100D。 7)反汇编命令U(Unassemble)有两种格式。 从指定地址开始,反汇编32个字节,其格式为: -Uaddress 例如: -u100 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70606020202 MOV WORD PTR0208,0202 18E4:0112 BBO4O2 MOV BX,0204 18E4:0115 E80200 CALL 011A 18E4:0118 CD20 INT 20 1

25、8E4:011A 50 PUSH AX 18E4:011B 51 PUSH CX 18E4:011C 56 PUSH SI 18E4:011D 57 PUSH DI 18E4:011E 8B37 MOV SI,BX 如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 对指定范围内的存储单元进行反汇编,格式为: -Urange 例如: -u100 10c 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C7060602

26、0202 MOV WORD PTR0208,0202 或 -u100 112 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70606020202 MOV WORD PTR0208,0202 可见这两种格式是等效的。 8)命名命令N(Name),其格式为: -N filespecs filespecs 命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以

27、是: d:path filename.ext 例如, -N myprog -L - 可把文件myprog装入存储器。 9)装入命令(Load),有两种功能。 把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为: -Laddressdrive sector sector 装入指定文件,其格式为: -Laddress 此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。 10)写命令W(Write),有两种功能。 把数据写入磁盘的指定扇区。其格式为: -W address drive sector sector 把数据写

28、入指定的文件中。其格式为: -Waddress 此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。 11)退出DEBUG命令Q(Quit),其格式为: -Q 它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。 问题:初学者问一个低级问题,执行debug-a后,如果有一行输入错误,如何更改这一行? 回答: 加入进行如下输入: D:PWIN95Desktopdebug -a 2129:0100movax,200 2129:0103movbx,200 2129:0106movcx,200 2129:0109 此时,发现movbx,200一句错误,应为movbx,20,可以敲回车返回-状态,然后输入: -a103 2129:0103movbx,20 如果多或者少若干行,不必重新输入,可以用M命令移动后面的程序来去掉或者增加程序空间。

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

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