实验一 Debug常用命令及80x86指令的使用
实验一Debug常用命令及80x86指令的使用
实验目的:
通过实验掌握下列知识:
1、DEBUG常用命令:A,U,D,E,R,T,G,Q。
2、80x86寄存器:AX/EAX,BX/EBX,CX/ECX,DX/EDX,FLAG,IP/EIP
3、80x86常用指令:MOV/MOVSX/MOVZX,ADD/ADC,SUB/SBB,DAA,XCHG等。
内容及步骤:
一、DEBUG命令使用:
1、打DEBUG进入DEBUG控制,显示提示苻'_'。
2、用命令E18E4:100'A'将'A'的ASCII码填入内存。
3、用命令D18E4:100观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令E18E4:10041重复上二项实验,观察结果并比较。
5、用命令E18E4:100303132……3F将30H-3FH写入地址为100开始的内存
单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?
6、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF
和AF的内容。
7、用R命令将AX,BX内容改写为1050H及23A8H。
二、808x86常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
MOVAX,1234
MOVBX,5678
XCHGAX,BX
MOVAH,35
MOVAL,48
MOVDX,75AB
XCHGAX,DX
2)用U命令检查键入的程序并记录,特别注意左边的机器码。
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注
意标志位有无变化。
4)用G命令运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标
志位有无变化。
2、加减法指令:
1)用A命令在内存100H处键入下列内容:
MOVAH,34
MOVAL,22
ADDAL,AH
SUBAL,78
MOVCX,1284
MOVDX,5678
ADDCX,DXSUBCX,AX
SUBCX,CX
2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
4)用G命令运行这些指令,检查并记录有关寄存器及ZF情况。
思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容。注意T命令与IP
的关系。
3、带进位加减法:
1)用A命令在内存200H处键入下列内容,并用U命令检查:
MOVAH,12
MOVAL,84
MOVCH,56
MOVCL,78
ADDAL,CL
ADCAH,CH
MOVDH,A7
MOVDL,58
SUBDL,7F
SBBDH,34
2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。
2)要求:用A命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
实验报告要求:
1、16进制数加减法手算结果及实验结果
2、80x86常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录(列出自编
程序)。
附:
DEBUG使用:
1、打DEBUG进入DEBUG,显示提示苻'_'。
2、退出DEBUG命令:Q
3、显示内存命令:D起始地址结束地址
4、修改内存命令:E起始地址,连续修改打空格键。打回车键退出E命令。
5、检查寄存器命令:R
标志位显示10
CFCYNC
ZFZRNZ
SFNGPL
AFACNA
OFOVNV
PFPEPO
DFDNUP
IFEIDI
6、修改寄存器命令:R寄存器名
7、小汇编命令:A起始地址,不输入指令打回车键退出A命令。8、反汇编命令:U起始地址结束地址
9、文件命名命令:N盘号:文件名
10、读文件命令:L内存地址
11、写文件命令:W内存地址
12、运行命令:G=起始地址结束(断点)地址
13、单步命令:T=起始地址运行指令数,进入子程序内部。
实验一 DEBUG调试工具的熟悉
实验1 DEBUG的使用及程序调试方法
一、实验目的
通过本实验使学生掌握调试工具DEBUG的使用方法、理解汇编指令、存储单元和寄存器等有关概念,能对简单的汇编语言程序进行调试。
二、实验原理
DEBUG是DOS、WINDOWS都提供的实模式(8086方式)程序的调试工具,在DOS方式下工作。使用它可以读写、传送、查看CPU各种寄存器中的内容、显示内存单元的内容、设置程序起始执行地址或断点、机器码级跟踪程序的运行。用DEBUG编程简单、方便和直观,可以直接查看程序的执行情况,便于熟悉和理解指令,掌握基本编程技巧。
DEBUG只使用十六进制表示数据(十六进制后面不加H),且对字母的大小写不敏感。
常用到的DEBUG功能:
用DEBUG的R命令查看、改变CPU寄存器的内容
用DEBUG的D命令查看内存中的内容
用DEBUG的E命令修改内存中的内容
用DEBUG的U命令将内存中的机器指令翻译成汇编指令
用DEBUG的T命令执行一条机器指令
用DEBUG的A命令以汇编指令的格式在内存中写入一条机器指令
三、实验内容
(1)学习调试工具DEBUG的使用方法,熟悉DEBUG常用命令的功能和用法。
(2)利用DEBUG调试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、 存储单元地址与内容的概念和作用,以及程序的执行。
四、实验方法与步骤
1.DEBUG的进入与退出
DEBUG是在DOS方式下使用的程序。在进入DEBUG前,应先以从WINDOWS 2000/XP中进入DOS方式(进入的是虚拟8086模式的DOS)。
方法:选择【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“cmd”后,单击【确定】按钮或按下键盘上的【Enter】键。在命令提示符后输入”debug” 后按下键盘上的【Enter】键。
2. 显示寄存器命令 R
实验一DEBUG命令实验
实验⼀DEBUG命令实验
实验⼀ DEBUG命令实验
⼀.实验⽬的:
掌握DEBUG 的基本命令及其功能
⼆.实验内容:DEBUG是专门为汇编语⾔设计的⼀种调试⼯具,它通过步进,设置断点等⽅式为汇编语⾔程序员提供了⾮常有效的调试⼿段。1、DEBUG程序的启动
DEBUG的命令格式:
[drive:][path] DEBUG [d:][p][filename][.ext][param...]
其中:drive: 是指定DEBUG⽂件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读⼊内存。若未指定,DOS将使⽤当前默认磁盘驱动器。path: 是DOS查找DEBUG⽂件的⼀个⼦⽬录串表⽰的路径。若未指定,DOS将使⽤当前⼯作⽬录。
d: 是DEBUG将要调试的⽂件所在的磁盘驱动器。
p: 是查找DEBUG将要调试的⽂件所需的⼦⽬录路径,若未指定,DOS使⽤当前⽬录。
filename[.ext] 是DEBUG将要调试的⽂件名。
param 是将被调试的程序(或⽂件)的命令⾏参数。
例如:在DOS提⽰符下,可键⼊命令:C>debug
DEBUG所完成的初始化动作,假定⽂件名没有,启动DEBUG:
段寄存器CS、DS、ES和SS置为DEBUG程序后的第⼀个段。
指令指针寄存器IP置为100H(程序段前缀PSP后的第⼀个语句)。
堆栈指针SP置为段末或/doc/1f7311358.html 暂驻部分的结束地址(其中较⼩的那个地址)。
其余通⽤寄存器均置为0,标志寄存器置为下述状态。NV UP EI PL NE NA PO NC
如果在DOS提⽰符下,可键⼊命令,包含⽂件名:C>debug name.exe
段寄存器DS和ES指向PSP。寄存器BX和CX含有程序长度。
注意:
字母不分⼤⼩写;
只使⽤16进制数,不加H;
分割符只在两个数值之间是必须的,命令和参数之间可有可⽆;
键⼊回车键执⾏命令,Ctrl+Break或Ctrl+C中⽌命令的执⾏;
[微机原理与接口技术课件]实验一DEBUG软件的使用
实 验 一 DEBUG 软 件 的 使 用
是专为8086/8088汇编语言设计的一种调试工具,是汇编语言程序设计者必
须掌握的工具。具有显示、修改、动态跟踪等功能。使用它可以对*.COM 、*.EXE文件
进行动态跟踪。
DEBUG可以显示和修改内存与寄存器内容,以便在调试中检查程序,查找与改错;亦
支持小汇编,直接对小段程序进行汇编;也可对磁盘进行读写。 一、实验目的
1.通过实验掌握DEBUG软件的基本使用方法。
2.进一步熟悉、理解8088/8086的寻址方式。
3.掌握数据传送、算术运算、逻辑运算等类指令的基本操作。
二、实验内容与步骤
本实验进行前必须保证系统盘上有DEBUG.EXE文件。
进入DEBUG只需在DOS环境下执行 DEBUG命令,即键入DEBUG回车后,屏幕上显示
DEBUG提示符:“_”(短划线)。操作如下:
C:>DEBUG
-
注: 字符下有下划线的为键入的内容,\代表回车,后面内容均如此.
1.程序输入汇编命令(A命令)
在输入程序应注意以下几点:
(1)输入的数字必须是十六进制数,并且不输入H。
(2)分号后面的内容(注释)不要输入。
(3)不输入标号,条件转移指令中的标号用偏移地址代替。
方法:先用一个离本转移指令的IP不远的但不一定准确的偏移地址代替标号
,待程序输入且完成反汇编后获得标号所在处的准确的偏移地址时再
修改。
在DEBUG提示符下键入A即进入汇编输入状态
-A \
键入下面的汇编程序
13F2:0100 MOV AX,2000 13F2:0103 MOV DS,AX 13F2:0105 MOV SS,AX 13F2:0107 MOV BX,2050 13F2:010A MOV SI,BX 13F2:010C MOV DI,3050 13F2:010F MOV SI,DI 13F2:0111 MOV SP,5FFF 13F2:0114 MOV CL,19 13F2:0116 MOV BL,CL 13F2:0118 MOV AH,F0 13F2:011A MOV CH,AH
1DEBUG命令的功能及使用
实验一 DEBUG命令的功能及使用
一 实验目的
掌握汇编语言基本运行环境和熟悉DEBUG调试程序的命令。包括:学习使用指令,掌握常用的指令功能和简单程序设计;掌握DEBUG调试程序的命令,熟悉程序输入、存储器和CPU寄存器及标志位的检查方法,单步、断点、连续等运行程序的调试方法。
二 实验内容
DEBUG的主要命令功能与格式
1.汇编命令A
格式:A [[/:] ]
上式等价于:
(1)A :
(2)A :
(3)A
(4)A
功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。
注:其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。
2.显示内存命令D
格式:D [/]
上式等价于:
(1)D
(2)D
(3)D
功能:以两种形式显示指定范围的内存内容。一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。
注:其中(1)以CS为段寄存器。(3)显示CS:100起始的一片内容。
3.修改内存命令E
格式:E []
上式等价于:
(1)E
(2)E
其中是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。
功能:(1)不断显示地址,可连续键入修改内容,直至新地址出现后键入回车Enter为止。(2)将逐一写入由开始的一片单元。
4.填充内存命令F
格式:F
功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。
例如:-F 5BC:200 L 10 B2,‘XYZ’,3C
汇编语言上机步骤与DEBUG常用命令的使用
、 实验一 汇编语言上机步骤与DEBUG常用命令的使用
【实验目的】
(1)汇编语言源程序的编辑、汇编、连接的方法
(2)掌握DEBUG常用命令的使用,如汇编命令A、反汇编命令U,查看寄存器命令R,查看内存单元命令D,修改内存单元命令E,填充内存单元命令F,设断点热行命令G及单步执行命令T等;
(3)掌握用断点执行或单步执行来检查和调式程序的方法;
(4)进一步了解8086/8088CPU内部寄存器的功能;
(5)掌握访问段式存储器结构地址的表示方法
【实验类型】 验证型实验
【实验内容及要求】
1、编辑源程序:将课本102页的代码输入到计算机,并保存(源程序可以不用写到实验报告上)
2、对源程序进行汇编,生成目标文件,写出相应的命令
3、对目标文件进行连接,生成可执行文件,写出相应的命令
4、用DEBUG程序调试生成的可执行文件:按以下要求完成
⑴用反汇编U命令显示程序及目标码,把结果写在实验报告上。
⑵用R命令查看各寄存器的情况,把结果写在实验报告上。
⑶写出第四条指令的逻辑地址,段地址及偏移地址。
⑷用单步命令T或断点命令G执行程序到RET处,并写出用T命令执行头5条指令的过程及G命令的执行过程。
⑸写出用D命令检查程序执行前后x,y,z的内容。
⑹用E命令修改数据段中某一存储单元的内容。
DEBUG常用命令
分类 命令格式 功能 说明
汇编与反汇编 -A[地址] 从指定地址开始汇编程序 地址默认值为:CS:IP -U[地址] 从指定地址开始反汇编32字节目标码
-U 起始地址
终止地址 在指定地址范围内反汇编目标码
运行与跟踪 -G=起始地址][断点1…断点10] 在指定地址开始执行到断点为止 地址默认值为:CS:IP
-T[=地址] 在指定地址执行一条指令后暂停
-T[=地址]n 在指定地址执行n条指令后暂停
存储单元读写移动比较与搜索 -D[地址] 从指定地址开始显示80H字节存储单元内容 地址默认值为:CS:IP
实验一++DEBUG命令实验(10机制本)
实验一 DEBUG命令实验
一、 实验目的
1、 熟悉常用debug命令的使用方法和功能,为今后调试程序做准备。
2、熟悉8086内部寄存器的作用和8086的内存组织结构。
二、 实验内容:
1. 进入文件:
操作:开始----运行------cmd↙-----debug↙
屏幕显示debug提示符“-“
在该提示符下可以输入各种debug命令。
在debug状态下默认十六进制。
2. 查看内存单元内容命令:D
格式1:—D [起始地址] ↙
格式2: —D [起始地址] [结束地址]↙(即首地址 末地址)
该指令将显示内存单元的地址,内存单元的内容(一行最多显示16个字节)和与内存单元相对应的可显示字符,不可显示的字符以圆点“.”表示。
格式1命令从起始地址开始显示128个字节,起始地址缺省时从上一个D命令所显示的最后一个单元的下一个单元开始显示,若以前没有使用过D命令,则从DEBUG初始化时地址(段地址:偏移地址)开始。
格式2命令显示该范围内内存单元的内容。在范围中包含起始地址和结束地址。若输入的起始地址中,未含段地址部分,则D命令认为段地址在DS中。输入的结束地址中只允许有偏移地址。
例如:—D 1000:2000↙ 显示段地址为1000H偏移地址为2000H开始的内存单元128个字节内容
—D 2000↙ 显示128个字节内容2000是偏移地址,段地址由DS提供
—D 200 300↙ 显示257个字节内容 ,段地址缺省时指DS提供段地址,200,300是偏移地址
—D 1384:0100 010F ↙ 该指令显示13940H-1394FH单元内容
3. 修改内存单元命令:E
格式1:—E [起始地址] [内容表]↙
格式2:—E [地址] ↙
功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。
8086指令系统汇编实训实例
1 8086指令系统实训实例
一、80x86微处理器中的寄存器
图1-1 80x86微处理器的基本结构寄存器
标志寄存器对照表
序号
类别
1
2
3
4
5
6
7
8
9
EFLAG OF DF IF TF SF ZF AF PF CF
DEBUG=1 OV DN EI NG ZR AC PE CY
DEBUG=0 NV UP DI PL NZ NA PO NC
标志名称 设置 未设置 标志名称 设置 未设置
溢出 OV(溢出) NV(未溢出) 零位 ZR(为0) NZ(不等于零)
方向 UP(增加) DN (减少) 辅助进位 AC(有进位)NA(无进位)
中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇)
符号 NG(负) PL(正) 进位 CY (有进位) NC(清除进位) 累加器AH AL
BH BL
CL
DH DL CH
SP
SI
DI
IP
FLAGS
CS
DS
SS
ES BP 基址寄存器
计数寄存器
数据寄存器
堆栈指针寄存器
基址指针寄存器
源变址寄存器
目的变址寄存器
指令指针寄存器
标志寄存器
代码段寄存器
段寄存器
附加段寄存器 堆栈段寄存器 数据寄存器
地址指针和
变址寄存器
控制寄存器 通用寄存器
数据段寄存器 2
二、 用DEBUG软件学习汇编语言
DEBUG的几点规则说明:
1. 所有数据默认为16进制数,后缀“H”不用加;
2. DEBUG命令都是一个字母,字母大小写不分,后面的参数可以用空格分开,也可以不用;命令与数字之间可以不分开,但是两个十六进制数字之间必须分开,如:
L100 = L 100;100 110 ≠ 100110 ;
实验1debug的使用
实验1debug的使用
实验一DEBUG的使用
一、实验目的:
1. 熟悉DEBUG的功能,掌握其常用命令格式并能熟练使用。
2. 使用DEBUG,观察PC机执行汇编指令的过程,掌握寄存器的名称与内存单元地址的形成。
二、实验要求:
1. 遵守规章制度,爱护实验室设备。
2、熟悉Debug各个命令的用法。
3、熟悉寄存器的名称以及物理地址的形成。
4、写出实验报告。
三、实验内容:
实验1、 DEBUG常用指令操作
进入Debug环境,完成下列步骤。
1、用R命令查看寄存器的值,将AX的值修改为1,BX的值修改为100 (十进制)。
2、用D命令查看内存00200H开始的128个单元的内容。用E命令将内存00200H和00202H处的内容分别改为1、2 。
3、用E命令将”I am a student!!”写入内存00200H处。用D命令查看是否写入成功。
4、用A 命令向内存00210H处写入汇编指令
MOV AX,1234
MOV BX,0158
ADD AX, BX
5、使用U命令反汇编,并用T命令执行上述指令,查看执行后的结果,3条指令执行后
AX的值为多少?
6、直接在内存中将指令“MOV BX,0158”改为“ADD BX,0158”,其他指令不变。 然后用G命令执行这3条指令,查看AX的值为多少?
实验2、理解逻辑地址与物理地址的关系
使用Debug命令设置下列寄存器及存储器的内容
(DS)=2000H, (BX)=0100H, (SI)=0002H,
(20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H,
(21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H.,
并用命令查看设置是否成功。
实验3、理解指令的执行过程
将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方mov ax, 1
DEBUG命令练习
实验一、 调试程序DEBUG
实验目的:1、学习汇编语言的一种调试工具DEBUG 的使用方法
2、以简单的传送指令(MOV)为例,掌握存储器操作数寻址方式书写格式
3、掌握14个寄存器基本功能,理解存储器偏移地址,物理地址的概念
实验内容:
1、显示存储器单元内容的命令 -D(书写格式,使用方法)
2、显示和修改寄存器内容的命令 -R(书写格式,使用方法)
3、修改存储器单元内容的命令 -E(书写格式,使用方法)
4、反汇编命令–U,汇编命令 –A (书写格式,使用方法)
5、运行命令-T,-G,退出命令-Q等
实验结果:
实验二、 汇编语言程序的上机过程
实验目的:1、熟练掌握用汇编语言设计、编写、调试、运行程序的方法。
实验内容:
1、编写出源程序、画出程序的流程图、
2、用汇编程序MASM对源程序汇编产生目标文件 *.OBJ,用连接程序LINK产生可执行文件 *.EXE。
3、用DEBUG 进行调试。
MOV AX, 1234H
MOV BX,5678H
PUSH BX
PUSH AX
POP BX ;执行后 BX= (1)
POP AX ;执行后 AX= (2)
MOV AX, 6384H ;执行后 AH= (3)
MOV CL,4
ROR AL,CL ;执行后 AL= (4)
AND AL,0F0H ;执行后 AL= (5)
实验三、 数据传送指令
实验目的: 1、进一步加深对寄存器,存储器操作数、立即数概念理解。
2、掌握存储器操作数各种寻址方式的格式。
3、理解进栈出栈时指令的执行过程,累加器的端口地址表示。
debug调试说明
实验1 查看CPU和内存,用机器指令和汇编指令编程
1.预备知识:Debug的使用
我们以后所有的实验中,都将用到Debug程序,首先学习一下它的主要用法。
(1)什么是Debug?
Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的远行。
(2)我们用到的Debug功能。
●用Debug的R命令查看、改变CPU寄存器的内容;
●用Debug的D命令查看内存中的内容;
●用Debug的E命令改写内存中的内容;
●用Debug的U命令将内存中的机器指令翻译成汇编指令;
●用Debug的T命令执行一条机器指令;
●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的。在以后的实验中,我们还会用到一个P命令。
(3)进入Debug。
Debug是在DOS方式下使用的程序。我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS。
①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows2000中进入Debug的一种方法,在Windows98中进入的方法
与此类似。
选择【开始】菜单中的【运行】命令,如图2.28所示,打开【运行】对话框,如图2.29所示,在文本框中输入“command”后,单击【确定】按钮。
图2.28选择【运行】命令 图2 29在文本框中输入“command”
进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。然后运行Debug程序,如图2.30所示,这个程序在Windows98中通常在c:\windows98\command下,在Windows2000中通常在c:\winnt\system32。由于系统指定了搜索路径,所以在任何一个路径中都可以运行。
