Debug命令-摘自百度百科

A 汇编命令

功能: 将指令直接汇编成机器码输入到内存中。
说明: 用于小段程序的汇编及修改目标程序,所有输入的数字均采用十六进制, 用户装入内存的汇编语句是连续存放的,若没有指定地址,并且前面没有使用汇编命令,该语句被汇编到 CS:0100区域。
例A:>DEBUG
-a 0100
08F1:0100 MOV AH,09
08F1:0102 MOV DX,109
08F1:0105 INT 21H;
08F1:0107 INT 21H; <-XP下运行cmd debug时,应该是INT 20H,21H会出遇无效指令错误
08F1:0109 db 'May I help you $'
08F1:0115←离开a状态
-g ←运行
May I help you 运行结果
Program terminated normally表示运行正常

C比较命令

功能: 比较两内存区域中的内容是否相同,若不同则显示其地址和内容。
如:C4000:0 3F 100
就是用来比较4000:0000-4000:003F与DS:0100-DS:013F之间的内容:其显示格式如下:
内存地址1内含值1内含值2内存地址2
例:比较4000:0 3F 100内容的差异
-C4000:0 3F 100
4000:0000 64 43 08F1:0100
4000:0001 3E 69 08F1:0101 显示内容的差异处
4000:0002 78 FF 08F1:0102
……………………………………
如果要比较的范围在DS内,则 段地址不必指出:
如:-C 0 4 100;比较DS:0---DS:4与DS:100---DS:104
C命令的另一种格式如下:C地址1 L 长度 地址2
如:-C000:0 L4 0;由0000:0与与DS:0开始比较它同-C0000:0 3 0命令相等,显示结果如下:
0000:0000 8A C0 08F1:0000
0000:0001 10 20 08F1:0001 它们都比较4个字节
0000:0002 1C 00 08F1:0002
0000:0003 49 7F 08F1:0003

转储命令

* D[地址] 或D[起始地址][目的地址] 转储命令
功能: 以内存映象方式显示内存中的信息。
说明: 转储用左右两部分显示内存映象内容,左边以十六进制,右边以ASCⅡ字符显示,所有不可打印字符用句号(。)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个 连字符 - 此命令隐含的 段地址为DS的值。若未指定起始地址,则D命令从显示的最后一个单元的下一个单元开始显示,若以前没有使用给D命令, 则从初使化的 段寄存器的内容,加上地址 偏移量 0100H 开始显示。
例:-d10,4f即为显示DS:4f的内容在D命令中如不指出段地址,则其默认为DS段。
如指明段地址,则从指明的段地址列出指定的范围
如:-dfff:00:0f
我们也可以指定长度来列出所需要内存内容
如:-d 100 L20即为显示由DS:100-DS:11F的内容,共20H个字节:
* E[地址] [字节串) 修改内存命令
功能: 从指定的地址开始修改内存值。
格式:E起始地址[数据行]
⑴用给定内容代替指定范围的单元内容
-E地址 内容表
例:-E100 41 42 43 44 48 47 46 45
-D 100,L08
08F1:0100 41 42 43 44 48 47 46 45 ABCDHGFE…
⑵逐个内存内容
例:-E 100:
08F1:0100 76 42 :42是操作员键入
此命令是将原100号内存内容76修改为42,用D命令可察看。
* F[地址范围] [字节或字节串] 填写命令
功能: 将要填写的字节或字节串填入由地址范围指定的存储器中。
例:-f100 120 61 62 63 64
-d100 11f
08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd
08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 g……1…
如果数据行超出指定的范围,则填不下的数值会被忽略。
例:-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100,lof
08F1:0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd
由上例可看出,超出范围的数据被忽略
另外,F和E命令都可填入字符串:
如:-F 100 105 "MSDOS"
-d 100 l0f
08F1:0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd

G执行命令

功能: 执行正在调试的程序,当达到 断点时停止执行, 并且显示寄存器标志和下一条要执行的命令。
说明: 如果没有指定起始地址,那么当前指令地址由CS,IP寄存器的内容来决定,如果用户指定起始地址就从指定的起始地址开始执行。如果指定断点,当指令到达指令地址时停止执行,并显示各寄存器标志位的内容和下一条要执行的命令,最多允许用户设定10个断点。
例:A:\>debug tan.exe
-u:反编译成汇编语言程码
…………
. .
-g 100 指定 中断点
Program terminated normally:
另外:我们在DEBUG下可运行一个文件.EXE
如:A:\>debug tan.exe
-g
即可开始运行此程序,和在DOS下完全一样:
* H[数值][数值] 十六进制算术运算命令
功能: 分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
说明: 替用户完成简单的十六进制数的运算。
例:-h4538 5623
9B5B EF15

I命令

功能: 从指定的端口输入并显示(用十六进制)的一个字节。
例:-i70
F9;显示70端口的内容为F9
I命令可由80X86的64K个端口取数据

L命令

功能: 将一个文件或盘的绝对扇区装入存储器。
说明: 单个L命令能够装入的最大扇区数是 80H,其中盘号 0,1,2,3……分别代表 A,B,C,……出现读盘错,显示错误信息。
⑴格式1.L装入地址 驱动器名 起始扇区/扇区数
这种方式可把磁盘上指定 扇区范围的内容装入到 存储器从指定地址开始的区域中,在此外扇区编号引用逻辑/扇区的方式。
例:-L 100 0 01,将A驱的0扇区装至CS:100上
-d 100 10f
08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.L,MSDOS 6.22……
⑵格式2:L装入地址
这种方式可把指定文件装入内存,装入的文件可在进入DEBUG时指定亦可用N命令建立,格式为-n文件名:
例1 DEBUG tan.pas
-L 100
例2 DEBUG
-n tan.pas
-L 100
须知:L命令只能读取逻辑 扇区,不能读取 硬盘分区表
L命令中所用的磁盘代码A=00,B=01,C=02……

M数据命令

功能: 把地址范围内的存储器单元的内容移到起始地址的指定地址中
说明: 传送期间,源区和目标区可以部分重叠;传送后源区域数据保持不变。
例:-e100 41 42 43 44 45
-d100 10f
08F1:0100 41 42 43 44 45 62 62 63 64 -61 62 63 64 61 62 63 64 ABCDEBCDABCDABCD
-M 100 104 110
-d110 L1F
08F1:0100 41 42 43 45 0A 21 19-20 01 01 20 07 96 87 9F ABCDE……
* N[盘号: ] [路径] [文件名] [扩展名]
功能: 定义操作文件名。
说明: 可同时定义两个操作文件,并将形成的文件控制块相应的设置在内存 CS:5C和CS:6C上,供以后的L和W命令操作之用。我们在运行程序侦错时,在启动DEBUG时在其后加文件程序名以及该程序的参数或运行文件,但当我们侦错一段后,可能装入其它文件来测试,这时我们可利用N命令来设置而无需退出DEBUG。
例:A:\>DEBUG tan.exe
-n youg.pas
当程序侦错一段时间后,若要把tan.exe装入tan1.pas则-ntanl.pas

O输出命令

功能: 发送字节到指定的输出端口。
例:当我们遇到开机要求输入口令时,可用如下方式取消
-O 70 10
_O 71 00

P进程命令

功能: 将一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。
说明: 在执行一条子程序调用指令,循环指令,中断指令或一个重复字符串指令时,发出P命令去执行有关指令,并且返回到要执行的下一条指令。P命令和T一样选用来跟踪程序运行过程用的命令,我们可以在P命令中指定程序运行的起始地址,指令个数,如未指定则CS:IP所指定程序的地址开始一次运行一条令。
P与T命令的差别在于P命令把CALL/INT当成一条指令来执行,简化了跟踪过程,P命令只运行RAM内存的命令,而T命令则可运行RAM和ROM里的程序。

Q 退出命令

R寄存器命令

功能: 一,显示单个寄存器的内容,并提供修改功能。二,显示所有寄存器内容, 再加上字母标志位状态以及要执行的下一条指令。三,显示8个标志位状态, 并提供修改功能。若不想改变则回车即可。
例:-r bx
bx 0050
:51
-r
AX=0000 BX=0051 CX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0003 ES=0CD3 SS=0CD3 IP=0100 NV UP EI PL NZ NA PO NC
0CD3:0100 0F DB OF
若想改变 标志寄存器,用-RF回车,则DEBUG会将标志内容显示出来,若想改变任一标志,只要输入该标志的名称即可。
标志名称 设置 未设置 标志名称 设置 未设置
滋出 OV(溢出) NV(未溢出) 零位 ZR NZ(不等于零)
方向 DN(减少) UP(增加) 辅助进位 AC NA(无进位)
中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇)
符号 NG(负) PL(正) 进位 CY NC(清除进位)
例:-Rf
NV UP EI PL NZ NA PO NC :-OV DI← 输入值

S命令

功能: 在指定的地址范围内查找给定的字符串。
说明: 用来指定在地址范围内查找一个字符串,若找到则显示其地址, 否则直接显示DEBUG提示符。隐含地址为DS段值。
在此内存可以用(起始地址)(终止地址)或(起始地址)L(长度)的方式来表示,而字符串与数据行则可混合使用:如:02.76"BC"。
例:-d100 lof
08F1:0100 OF 2A 41 43 0B 31 42 96 -FF F0 B9 8A F3 00 B1.. AC,1B...
-S 100 lof"AC"
08F1:0102← 表示找到,由0102开始,

T跟踪命令

功能: 逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。
说明: 通常采用跟踪一条指令,但用户也可以用指令条数设定一次跟踪多条指令, 每执行一条指令之后,显示所有寄存器的内容和标志状态。
逐条指令跟踪 -T[=起始地址]
从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值,如来指定地址则从当前CS:IP开始执行。
A:\>DEBUG
-A
08F1:0100 MOV DL,03H
08F1:0102 MOV AH,02H
08F1:0104 INT 21H
08F1:0106 INT 20H
08F1:0108
-T
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=08F1 ES=08F1 SS=08F1 CS=08F1 1P=0105 NV UP EI PL NZ PO CY
09F1:0102 B402 MOV AH,02
若指定起始地址,则T命令会从指定的地址开始跟踪,我们还可以指定跟踪一次所 运行指令的个数,用Ctrl+S暂停屏幕的显示,以便观察。
-t=100 10;由CS:100开始跟踪10条指令

U地址命令

功能: 将内存中的内容转换为汇编语句。
说明: 反汇编的字节数取决与用户的系统显示形式,以及在U命令中使用的可选项。
⑴从指定地址开始编译,反汇编32个字节
-U[地址]←从CS:100开始,其反汇编32个字节
如果地址被省略,则从一个U命令的最后一条指令的下一条单元开始汇编32个字节。
⑵对指定的存贮范围进行反汇编
-u起始地址 终止地址(L 长度)
例:-U 100 109
08F1:0100 CD20 INT 20
08F1:0102 FF9F009A CALL FA12[BX+9A00]
08F1:0106 F0 LOCK
08F1:0107 FE1D CALL FAR [DI]
08F1:0109 F0 LOCK
说明:如指定了范围则整个范围全都会被反编译

W写盘命令

* W[地址] [盘符:] [起始 扇区] [扇区数] 写盘命令
功能: 将修改过的数据写到磁盘上。
说明: 可以将指定内存地址开始的数据写在磁盘上,可以在没有指定参数, 或指定地址参数的情况下,将调试文件写在磁盘上。
在运行W时需设置文件的大小CX或BX寄存器
⑴把数据写入磁盘的指定扇区
-W 起始地址 驱动器名 起始扇区  扇区数
⑵把数据写入指定文件中
-W 起始地址
例A:\>DEBUG
-A
08f1:0100....
. 写入 程序段
08F1: 012A....
-R CX
CX:0000
:2A←写入字节数,即为程序结尾地址减起始地址
-n tan.com←设置文件名,需后缀为com
-w
Wring 002A bytes
-q
A:\>TAN←即可执行此程序
* "XD"命令:释放EMS内存
例:-XD 0001
handle 0001 deallocatel←释放了
利用XD释放后可再分配
*"XM"命令;把 扩充内存上的内存页区映射到主内存区
格式:XM RAM 长页码 主内存页码句柄
例:-XM3 2 0001←把0001号句柄的第3号逻辑页区映射到2号真实页区
Logical page 03 mapped to physical page 02
*"XS"命令:显示当前EMS使用情况。
格式 -XS

转载于:https://www.cnblogs.com/NongMG/p/4526698.html

汇编语言第二课作业-实验1相关推荐

  1. 汇编语言第二课作业2.1

    1.计算 mov    ax,62627         ax=F4A3H mov    ah,31H            ax=31A3H mov    al,23H             ax ...

  2. 汇编语言第二课作业2.3

    执行下面3条指令后,CPU几次修改IP,什么时候,IP的值是多少? MOV    ax,bx    修改一次,IP=0003H SUB      ax,ax    修改一次,IP=0006H JMP  ...

  3. Java第二次作业|实验3 运算符、表达式和语句

    Java第二次作业|实验3 运算符.表达式和语句 实验目的:理解运算符的优先级,掌握运算符与表达式,控制语句 题目集 1.用for循环输出俄文的"字母表",每个字母表输出占2列 / ...

  4. 第二课作业(刘萌150206318)

    一. C语言文件的操作 1. 文件操作的基本方法: C语言将计算机的输入输出设备都看作是文件.例如,键盘文件.屏幕文件等. #include.h> int main() { printf(&qu ...

  5. 20189200余超 2018-2019-2 移动平台应用开发实践第二周作业

    2018-2019-2 移动平台应用开发实践第二周作业 实验部分,在linux中用git命令将代码传到码云上 成功上传的截图 码云上的截图 遇到如下的问题 解决方法 我发现在进行第一步git clon ...

  6. 【Web编程实践课第二次作业】体育新闻世界

    夢に敗れた幼き人 被梦想打败的幼稚的人 憧れたヒーローには 是无法变成自己 成れやしないんだ 所憧憬的英雄的 現実に叩き起された時 被现实叫醒的时候 理想郷は離れて 理想的桃花源便会离去 崩れ落ちてき ...

  7. 「数据结构」普林斯顿算法课第二周作业

    「数据结构」普林斯顿算法课第二周作业 Algorithm I, Princeton 编程作业: Deques and Randomized Queues 思路 Deque.java Randomize ...

  8. 《移动软件开发》结课作业:答案漂流瓶 实验报告

    姓名和学号? 陆子毅,20120012029 本实验属于哪门课程? 中国海洋大学22夏<移动软件开发> 实验名称? 结课实验:答案漂流瓶 Answer Drift Bottle 博客地址? ...

  9. 计算机课实验报告排版,大学计算机排版作业实验报告.doc

    大学计算机排版作业实验报告 计算机大作业(排版) 字体设置 按住"Ctrl+A"将要排的文章全部选定 在菜单栏点击"格式"→"字体" 在&q ...

最新文章

  1. KMP算法的详细解释及实现
  2. 人工智能时代,机器视觉技术的未来趋势
  3. 2.easyui 控件取值方式
  4. eBay测试老兵的修炼之道:如何从测试“小工”到测试“专家”?
  5. C++类中封装线程函数
  6. jmp连mysql_令人迷惑的ATT的jmp:直接跳转和间接跳转 [转]
  7. 关于element-ui的upload文件上传组件的使用技巧总结
  8. 实战解读丨Linux下实现高并发socket最大连接数的配置方法
  9. MP law simulation
  10. linux屏幕截图之滚动截屏
  11. 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
  12. ZooKeeper性能测试
  13. 调色板类型、调色板模式、调色板压缩算法是什么意思?(调色板就是一个颜色的索引表)
  14. 打通法律服务群众“最后一公里”,方正璞华劳动人事法律自助咨询服务平台频获“点赞”
  15. JIRA + FishEye + Crucible + Confluence + PostgreSQL
  16. 拿到FaceBook注册用户的手机号有多简单?看这篇文章就够了。
  17. 3.10Hello,C语言君
  18. win10系统开启局域网共享
  19. Mac电脑用预览功能调整图像大小?Mac调整图片大小方法
  20. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) 飞行棋

热门文章

  1. java 跨年 周计算公式_如何跨年计算 两日期之间相隔的周数 with java8 time API
  2. python以下字符串合法的是_以下字符串合法的是().
  3. 怎么连接屏幕_手机屏幕坏了也可以操作?这办法学会了再不怕碎屏
  4. 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...
  5. 吸顶wifi_分享 | 酒店WiFi网络的三种部署模式
  6. mac 配置 php,mac如何配置php环境
  7. ffmpeg 编译Android
  8. 微信小程序订单页面下拉刷新上拉分页加载
  9. Android5.0如何正确启用isLoggable(二) 理分析
  10. Android中对Log日志文件的分析[转]