微机原理 debug指令详解
【微机原理】DEBUG命令详解

DUBUG命令详解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 jump1可以将near 前缀缩写为ne。
区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。
可接受的缩写分别是wo 和by。
以下范例显示两种格式:dec wo [si]neg byte ptr [128]指定操作数Debug 使用包括在中括号([ ]) 的操作数引用内存地址的习惯用法。
这是因为另一方面Debug 不能区分立即操作数和内存地址的操作数。
微机原理实验一(DEBUG)

演示:DEBUG常用命令(此环境下,所有数据均为十六进制,不加后缀)—A 汇编—U 反汇编—D 显示存储器值—E 修改存储器值—R 显示寄存器值—T 单步执行—G 断点执行—Q 退出实验内容:一、利用A命令编辑七条指令,采用MOV AX,源OP的形式,要求源OP使用七种不同寻址方式。
(适当记录结果)U命令对刚才的7条指令反汇编,查看其机器代码,体会不同寻址方式的差异性,注意偏移地址的变化。
R命令查看寄存器初始状态。
T命令执行,注意每条指令执行后AX 的变化,思考原因。
D命令查看相关存储单元的内容,看是否与AX的变化一致。
Q命令退出。
二、判断以下指令正误,并利用A命令、T命令编辑执行,看实际情况是否与你判断的一致。
(记录判断结果,你还可以对你感兴趣的情况加以尝试)1.PUSH SP2.MOV AX, CS3.PUSH [BX]4.MOV [200], 125.MOV [200], 12346.LEA BL, [100]7.LEA BX, [100]8.LEA BX, [100+1]9.LEA BX, [100*2]10.MOV BL, [100]11.MOV BX, [100]12.XCHG AX, BX13.XCHG [BX], [SI]14.XCHG BX, [BX]三、利用A命令编辑以下内容DB 0,1,4,9,10,19,24 此为转换表,表名省略LEA BX, […] 中括号填入上一条伪指令的偏移地址MOV AL, 3XLAT利用T命令或G命令执行,注意AL,BX值的变化,思考XLAT可以用哪些指令替换,从而实现同样的功能。
(记录替换的指令)四、自行设计试验内容,验证LDS、LES 的功能。
(记录验证过程)。
实验3.1调试工具Debug的使用及基本指令的用法

32位微机原理与接口技术实验报告
姓名王学杰专业计算机应用技术班级1362班
课程32位微机原理实验项目调试工具Debug的使用及基本指令用法
【实验目的】
①掌握Debug调试工具的的使用方法
②调试8086的各种指令用法
【实验设备】
PC机一台或者QTH-2008PC实验设备一套
【实验内容】
⑴ Debug的使用
①Debug的进入和退出
在DOS提示符下键入:DEBUG ↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG令。
② 修改CPU 内部的各寄存器 观察各寄存器的内容
显示并修改AX的内容
将AX的内容改为1234H
显示并修改标志寄存器的内容
将标志寄存器的OF置为OV:DF置为DN
③观察和修改内存单元的内容
④输入程序
⑤单步执行程序
⑥反汇编程序
⑦执行一段程序。
微机接口debug指令详解

2014-12-3
6
D命令使用
-d cs:100 按以下格式显示地址范围中的内容(假定 CS=0AF6): 0AF6:0100 77 61 6E 67 78 69 61 6F- wangxiao 69 6A 6B FF 0E 00 01 FF ijk…..
2014-12-3
7
三、DEBUG 命令详解
2014-12-3
5
三、DEBUG 命令详解
★ D命令 格式:D [地址] 或D [起始地址][目的地址] 功能:以内存映象方式显示内存中的数据。 参数说明:指定要显示内容的内存单元的起始 地址和结束地址,或起始地址和长度。如果不 指定 [地址],Debug将从以前 d 命令中所指 定的地址范围的末尾开始显示 128个字节的内 容;第一次从DS:100处开始显示。
2014-12-3
9
三、DEBUG 命令详解
★ T命令 格式:T [=地址] [指令条数] 功能: 逐条跟踪程序的执行,每条指令执行后都 将显示各寄存器的内容。 参数说明:[=地址] 指定第一 条要执行指令的位置。如果 不指定地址,则默认地址是在 CS:IP 寄存器中指定的当前地址,[指令条数] 指定在将 控制返回给 Debug 之前要执行的指令数,默认 值为 1。
debug指令详解
2014-12-3
1
一、DEBUG概述
1、 DEBUG是在DOS状态下面供程序员使用的 程序调试工具。 2、它可以用来检查内存中任何地址中的内容以 及修改特定地址中的内容。 3、DEBUG还可以用于逐指令执行某个程序,追 踪程序的执行过程,比较一条指令执行前后数值 变化情况,读写文件与磁盘扇区。 4、DEBUG还可以用于读写端口中的数值。
微机原理实验debug调试

汇编语言调试程序DEBUG的练习一一、练习目的1、学习使用DEBUG程序的各种命令。
2、利用DEBUG学习8086指令系统。
二、练习任务1、参照说明,掌握DEBUG程序的各种命令,重点是命令R,D,A,U,T,P,G命令的使用。
用命令A汇编下列指令,判断指令正误并说明原因。
1).ROR AX,8;错误,因为ROR指令的源操作数只能是数字1或是CL。
2).LEA DI,[AX];错误,因为LEA指令的目的操作数不能是DI。
3).MOV DS,2010;错误,因为段寄存器和立即数不能在MOV指令间传。
4).PUSH AL;错误,因为PUSH指令的目的操作数只能是通用寄存器或是内存。
5).OUT 900,AL;错误,因为900已经超过了8位二进制数的范围。
6).MOV [BX],0;错误,因为内存和立即数之间的类型没有确定。
2、练习使用汇编命令1)利用加法指令求3+52)利用乘法指令求3*53)利用算术运算指令求3的补码4)学习使用逻辑运算指令。
求5和17相与、相或的结果。
5)学习数据传送指令三、设备PC机一台四、练习步骤1、实现3加5:2、实现3*5:3、实现求3的补码:4、实现5和17相与:5、传送指令(独立练习)1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。
并注意标志位有无变化。
说明:下面所有操作均在DOS状态下进行。
DEBUG.EXE是DOS操作系统提供的一个调试汇编语言程序的工具程序。
其主要功能为:1.可动态调试汇编语言程序;2.可检查或修改CPU各寄存器、标志及内存单元的内容;3.可输入汇编指令到指定的内存;4.可把要调试的程序(通常以可执行文件形式存储在磁盘上)调入到内存中,控制CPU 按单步、设置断点等方式执行程序,检查程序运行过程中的中间结果,以便寻找程序出错的原因。
【微机原理】DEBUG命令一览表

DEBUG 主要命令一览表 DEBUG [d:] [path] [.exe] [ 参数]2节。
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 调试程序的应用(1)

实验一Debug 调试程序的应用一、实验目的1.掌握Debug常用命令的应用。
2.利用Debug调试可执行文件(*.EXE)。
二、实验内容1. 进入Debug,使用A命令将源程序写入100H开始的内存并汇编,然后使用G命令运行程序,接着用U命令反汇编,将机器指令送到起始地址为200H 的若干单元并加以验证,用Q命令退出Debug,返回DOS提示符。
2. 进入Debug,使用A命令将源程序写入100H开始的内存并汇编,然后使用G命令运行程序,接着用D命令观察运行结果后,在用U命令反汇编,用Q命令退出Debug,返回DOS提示符。
3.进入Debug,用A命令写入汇编源程序,接着用R命令显示状态,并用T命令单条执行指令,注意在执行命令的同时观察相应寄存器的状态。
4.练习使用填充命令F、搬家命令M和比较命令C。
5.利用Debug调试可执行文件(*.EXE)。
三、实验仪器、材料1. 软件DOSBOX、MASM2. PC微机一台四、实验步骤1.进入debug,使用A命令:-a100写入以下代码:MOV DL, 33H ;字符3的ASCII送DLMOV AH, 2 ;使用DOS的2号功能调用INT 21H ;进入功能调用,输出‘3’INT 20H ;执行INT 20H中断服务程序,结束程序,返回DOS 写完回车两下,再用-g=起始地址结束地址命令回车,再用-u命令回车,用-d100可得如图1-1,然后用-e200命令空格依次输入:B2 33 B4 02 CD 21 CD 20回车,用-d200可得如图1-2,用q退出debug。
2.进入dedug,使用A命令:-a300 写入以下代码MOV AL, [0120]ADD AL, [0122]DAAMOV BY[0124],ALMOV AL, [0121]ADC AL, [0123]DAAMOV BY[0125],ALINT 20用-g命令,再-d100查看结果如图2-1,在用U命令反汇编,用Q命令退出debug。
微机原理 DEBUG的使用

南通大学计算机学院
DEBUG的使用 的使用
Edit 指令
这是修改内存单元的命令,先进入 debug 模式,再进行以下操作: C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Enter] 注意!用-E显示后,如果不要修改內容,可以直接按 Enter 键结束E命令;如果要继续修 改的话,就按空格键,DEBUG 会自动显示原来内容,等待输入新值。 C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Space] 146F:0108 41.42 [Space] 6D.43 [Enter] 这时显示内存可以看到: -d 100 L10 [Enter] 146F:0100 65 20 68 69 67 68 20 41-42 43 6F 72 79 20 61 72 e high ABCory ar
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、DEBUG概述
DEBUG是在DOS状态下面供程序员使用的程序调试工具。它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。此外,DEBUG还可以用于读写端口中的数值。
参数说明:[地址]指定存放键入汇编语言指令的内存单元的位置。
★C命令
格式:C[源地址范围][目的地址]
功能:比较两内存区域中的内容是否相同。若不同则按字节显示其地址和内容,若相同则不显示任何内容。
参数说明:[源地址范围]指定要比较的内存第一个区域的起始和结束地址,或起始地址和长度。[目的地址]指定要比较的第二个内存区域的起始地址。
格式:E[地址] [字节串]或E[地址]
功能:从指定的地址开始修改内存值。参数说明:[地址]指定存放[字节串]第一个内存的位置,[字节串]是要放入内存单元中的数据。
★F命令
格式:F[地址范围] [字节或字节串]
功能:将要填写的字节或字节串填入由地址范围指定的存储器中。
参数说明:[地址范围]指定要填充内存区域的起始和结束地址,或起始地址和长度。[字节或字节串]指定要输入的数据,可以由十六进制数或引号包括起来的字符串组成。
功能:定义DEBUG使用的文件。
参数说明:[盘号: ] [路径] [文件名] [扩展名]指定文件所在的盘符,路径,文件名和扩展名。
★O命令
格式:O[端口地址] [数据]
功ቤተ መጻሕፍቲ ባይዱ:发送数据(字节)到指定的输出端口。
参数说明:[端口地址]指定要写入数据的端口地址,[数据]指定要向[端口地址]中写入的字节值。
注意:在D命令中若不指定段寄存器,默认规定为DS。
★E命令使用说明:当使用E命令时,有两种使用格式: 1、用E命令中包含的字节串替换从指定的地址开始的多个字节的内容;2、E命令后不跟字节串,则允许按顺序方式显示和修改内存值,按下空格键显示下一字节内容,若想修改,直接输入相应值;按下减号键显示上一字节内容,若想修改,直接输入相应值。3、停止执行e命令。按ENTER键。在任何字节位置都可以按ENTER。
0AF6:0101 C0 00 1000:0301
0AF6:0102 89 00 1000:0302
0AF6:0103 D8 00 1000:0303
0AF6:0104 65 00 1000:0304
0AF6:0105 66 00 1000:0305
★D命令使用
说明:当使用d命令时,Debug分两个部分显示内存单元内容:左边显示内存单元中存放的十六进制数;右边显示左边的十六进制所表示的ASCII字符,所有不可打印字符用句号(.)表示。每行显示16个字节的内容,在第八和第九个字节之间有一个连字符“–“。
★L命令
格式:L[地址][盘号:][逻辑扇区号][扇区数]
功能:将一个文件或盘的绝对扇区装入存储器。
参数说明:[地址]指定要在其中加载文件或扇区内容的内存空间的起始位置。[盘号:]指定包含读取指定扇区的磁盘的驱动器。该值是数值型,表示为:0 = A, 1 = B, 2 = C,……等。[逻辑扇区号]指定要加载其内容的第一个扇区的十六进制数。[扇区数]指定要加载其内容的连续扇区的十六进制数。
格式:S[地址范围] [字符串]
功能:在指定的地址范围内查找给定的字符串。
参数说明:[地址范围]指定要搜索范围的开始和结束地址。[字符串]指定要搜索的字节值或字符串。字符串应包括在引号中。
★T命令
格式:T[=地址] [指令条数]
功能:逐条跟踪程序的执行,每条指令执行后都将显示各寄存器的内容。
参数说明:[=地址]指定第一条要执行指令的位置。如果不指定地址,则默认地址是在CS:IP寄存器中指定的当前地址,[指令条数]指定在将控制返回给Debug之前要执行的指令数,默认值为1。
DEBUG输入数据时有两种方法:提示方法和非提示方法。在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。在非提示方法下,输入保持数据的内存地址以及要输入的数据。DEBUG的启动:进入DOS状态下,键入DEBUG,按ENTER键,如:C:\>DEBUG,则屏幕显示:-
★H命令
格式:H[数值][数值]
功能:分别显示两个十六进制数相加的和以及第一个数减去第二个数的差。
参数说明:[数值]表示从0到FFFFh范围内的任何十六进制数字。
★I命令
格式:I[端口地址]
功能:从指定的端口输入并显示(用十六进制)指定端口中的数据(字节)。参数说明:[端口地址]指定要读取数据的端口地址。
★P命令
格式:P[=地址] [数据]
功能:执行一个子程序调用指令,循环指令,中断指令或一个重复字符串指令,停止在下一条指令上。
参数说明:[=地址]指定第一条要执行指令的位置。如果不指定地址,则默认地址是在CS:IP寄存器中指定的当前地址,[数据]指定在将控制返回给Debug之前要执行的指令数,默认值为1。
0100:0100 dec word ptr [100]
0100:0102 dec wo ptr [100]
0100:0105 dec byte ptr [100] 2.在DEBUG下,应注意区分立即操作数和内存地址的操作数,使用包括在中括号([ ])中的操作数表示内存地址。3.在DEBUG下,能够使用的伪指令仅有DB和DW两个,分别用于定义字节和字操作数,此时定义的操作数被存放在该定义指令所在的内存空间中。如下列所示(注意内存空间的变换,why?):-a 0100:0100
★D命令
格式:D[地址]或D[起始地址][目的地址]
功能:以内存映象方式显示内存中的数据。参数说明:指定要显示内容的内存单元的起始地址和结束地址,或起始地址和长度。如果不指定[地址],Debug将从以前d命令中所指定的地址范围的末尾开始显示128个字节的内容;第一次从DS:100处开始显示。
★E命令
★M命令
格式:M[地址范围][起始地址]
功能:把地址范围内的存储器单元的内容移到起始地址的指定地址中
参数说明:[地址范围]指定要复制内容的内存区域的起始和结束地址,或起始地址和长度。[起始地址]指定要将range内容复制到该位置的起始地址。
★N命令
格式:N[盘号: ] [路径] [文件名] [扩展名]
★G命令
格式:G[=起始地址] [[断点]……]
功能:执行正在调试的程序,当达到断点时停止执行,并且显示寄存器标志和下一条要执行的命令。参数说明:[=起始地址]指定当前在内存中要开始执行的指令所在的内存单元的地址。如果不指定[=起始地址],DEBUG将从CS:IP寄存器中的当前地址开始执行程序。[[断点]……]指定可以设置为g命令的部分的1到10个临时断点。
从键盘键入下面命令:-d cs:10010fDebug按以下格式显示地址范围中的内容(假定CS=0AF6):
0AF6:0100 77 61 6E 67 78 69 616F-696A6B FF 0E 00 01 FF wangxiaoijk…..键入以下命令,Debug将从CS:100开始显示20h个字节的内容:-d cs:100 l20键入以下命令,Debug将显示范围从DS段的100h到115h中所有字节的内容:-d 100 115
0100:0100 DB ‘ABCDEFG’
0100:0107
★C命令使用说明:如果[源地址范围]和[目的地址]中内存单元的数据相同,Debug将不显示任何内容而直接返回到Debug提示符。如果有差异,Debug将按如下格式显示:[源地址]源地址中内容目的地址中内容[目的地址]
如下列所示:
-C CS:100 105 DS:300;(假定CS=0AF6;DS=1000)0AF6:0100 88 00 1000:0300
0100:0100 jmp 102
0100:0102 jmp near 105
0100:0105 jmp far10a2.汇编语言指令所涉及到的操作数可以是字操作数也可以是字节操作数,在语句不能判别操作数的类型时,可以使用前缀word ptr或者前缀byte ptr指定操作数的类型。缩写分别是:wo和by。如下列所示:-a0100:0100
注意:
1.若地址部分只输入偏移量,则E命令认为段包括在DS寄存器中。
2. [字节串]的值可以是十六进制字节或字符串。使用空格、逗号或制表符来分隔值。必须将字符串包括在单或双引号中。
3.使用E命令后,内存单元中原来的数据将丢失,或者说被新输入的数据覆盖。从键盘键入下面命令:-E 100 Debug按下面的格式显示第一个字节的内容(假定DS=0AF6):0AF6:0100 EB.要将该值更改为61,请在插入点键入(使用符号”_”表示) 61,如下所示:0AF6:0100 AB.61_此时,若按下空格键,将显示下一个内存单元中的内容: 0AF6:0100 AB.61 EF._此时,又可以在插入点键入新的内容,改写当前显示的内存内容,若不需要改写当前内存单元的内容,可以直接按下空格键,将显示下一个内存单元的内容,如此,一直到按ENTER停止e命令并返回到Debug提示符下。若使用减号键,操作和按下空格键一样,区别在于将显示上一个内存单元的内容。
★U命令
格式:U[起始地址]或者[地址范围]
功能:将内存中的内容转换为汇编语句。
参数说明:[起始地址]或者[地址范围]指定要反汇编代码的起始地址和结束地址,或起始地址和长度。
★W命令
格式:W[地址] [盘符:] [起始扇区] [扇区数]
功能:将内存中的数据写入磁盘中。
参数说明:[地址]指定要写到磁盘文件的文件或部分文件的起始内存地址。如果不指定address,Debug程序将从CS:100开始。[盘符:]指定包含目标盘的驱动器。该值是数值型:0 = A, 1 = B, 2 = C,等等。[起始扇区]指定要写入第一个扇区的十六进制数。[扇区数]指定要写入的扇区数。