微机原理 实验一 DEBUG调试工具
[微机原理与接口技术课件]实验一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,200013F2:0103 MOV DS,AX13F2:0105 MOV SS,AX13F2:0107 MOV BX,205013F2:010A MOV SI,BX13F2:010C MOV DI,305013F2:010F MOV SI,DI13F2:0111 MOV SP,5FFF13F2:0114 MOV CL,1913F2:0116 MOV BL,CL13F2:0118 MOV AH,F013F2:011A MOV CH,AH13F2:011C MOV BYTE PTR [DI],4013F2:011F MOV WORD PTR [SI],010013F2:0123 MOV DL,[SI+01]13F2:0126 MOV DH,[SI+01]13F2:0129 MOV AL,[SI+01]13F2:012C MOV WORD PTR [BX+SI],0022 13F2:0130 MOV [BX+SI+02],BX13F2:0133 MOV [BX+SI+02],BX13F2:0136 MOV BP,[BX+DI+02]13F2:0139 MOV [BX+DI],BX13F2:013B MOV AX,[BP+DI]13F2:013D MOV BL,AL13F2:013F MOV ES,BX13F2:0141 PUSH BX13F2:0142 PUSH DI13F2:0143 PUSH DI13F2:0144 POP CX13F2:0145 POP DX13F2:0146 XCHG BP,AX13F2:0147 XCHG DH,BL13F2:0149 SAHF13F2:014A CMC13F2:014B LAHF13F2:014C STD13F2:014D CLI13F2:014E PUSHF13F2:014F CLD13F2:0150 POPF13F2:0151 INT2113F2:0153 ^C重新回到DEBUG提示符“-”状态,表示汇编命令已结束。
实验1-DEBUG调试
1)在启动的debug程序里逐条输入32位二进制数相加程序的指令,完成无符号数5B68F271H和0AC6D5698H的加法操作,指令执行情况见下图1:
图表1
可以看到,对32位数的低16位操作时,存放地址是13B8:0100,指令长度为3,即在寄存器类型的指令上增加1,在进行ADC加法指令时,考虑到了进位CF,所以指令长度为4。
实验一、Debug调试
吴艳红 11283019
一、实验目的
1.进一步学习汇编语言基本指令使用方法;
2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g
3.等逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
二、实验题目
1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
4、在执行debug程序时,需要给出.exe文件的后缀名,否则会报错,见图4,这是因为在生成.exe文件时,同时生成了.obj和.lst文件,它们都是同名后缀的,所以报错。
2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。
三、实验过程
1.启动计算机的WINDOWS操作系统,在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-doscommand程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。
ZF标志寄存器在执行DX的异或指令时为1,表明DX内容初始化为0000H,但在执行对AX内存的累加时,DX作为高位的寄存器,执行DX←DX+0000H+CF,见图7,前几次执行ADC DX,00 时,结果都是ZF=ZR,DX=0000H,说明计算结果没有向高位产生进位,;当标志寄存器OF连续两次为OV,显示溢出,并且CF=CY,显示最高位有进位时,AX=2340H,再次执行DX←DX+0000H+CF,ZF的标志为NZ,DX=0001H,表明计算结果非零,说明低16位的计算有进位,也显示了指令ADC的实现过程.
实验一 调试工具DEBUG的使用
实验一调试工具DEBUG的使用1.1 实验目的(1)学习如何在Windows的命令模式下启动DEBUG。
(2)掌握DEBUG的常用基本命令。
(3)学习如何使用DEBUG查看CPU和内存以及进行跟踪调试。
1.2 实验设备及软件环境装有DOS系统及MASM6.X的微机一台。
1.3 预备知识1 什么是DEBUG?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。
2 常用的Debug命令及其含义3 启动DEBUG(1)打开Windows命令窗口选择“开始”→“运行”→输入“cmd”命令(2)启动DEBUG在命令窗口中启动DEBUG,将显示连接符“-”,这时可输入各种DEBUG命令。
(3)关于使用命令的几点说明:●在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行;●命令是单个字母,命令和参数的大小写可混合输入●可用F1、F2、F3、Ins、De l、→等编辑键来编辑本行命令●当命令出现语法错误时,将在出错位置显示“^Error”●在DEBUG中使用的数都是以十六进制来表示的1.4 实验内容1 R命令作用:查看、改变CPU寄存器的内容(1)显示所有寄存器之中的内容:输入R我们重点关注AX、BX、CX、DX、CS及IP寄存器的内容,其他寄存器SP、BP、SI、DI、ES、SS及标志寄存器先不予理会。
此外,并列出了CS:IP所指向的内存单元处所存放的机器码,并将它翻译为汇编指令。
(2)改变寄存器中的内容:输入R AX在提示符“:”后输入1111,即可将AX的值设置为1111。
在输入R命令,查看修改后的寄存器值。
练习:(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放的机器码以及对用的汇编指令;(2)用R命令修改CS的值,并查看此时CS:IP的指向,存放的机器码以及对用的汇编指令;2 D命令作用:查看指定范围内的内存中的内容(1)直接输入D命令DEBUG将输出3部分内容,查看执行结果。
微机原理与接口技术 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。
微机原理实验与调试软件的使用
1.(重做,用宏定义表格,不用xlat指令,)定义一数据段data,从 10H开始存放y函数值表,table为首指针( Y=X2-2X+3 ; X=3,4,5,6,7,8,9,10)。编一程序根据X值查table表,把对应Y值存入 Y变量中。
2.字节变量BCDC中定义了10个字节的压缩BCD码(20十进制数), 编一程序按顺序把它们转换成字符(ASC码),存入ASCC开始的 字节数据区。
四.实验小结(或收获、感受、经验、意见、建议等)
指令学习: 实验三 分支程序设计与调试
一.实验目的:
1.学习条件转移指令功能和简单分支程序设计。 2.学习在debug中调试分支程序的方法。 二.实验内容
1.写一段程序完成Z=|X-Y|,设X和Y为单字节无符号数, 分别在[10]和[20],Z在[30]单元。
实验一 debug调试工具软件的使用
三.实验步骤(根据具体题目细化) 1.进入DOS模式界面窗口,进入DEBUG。(根据实验室 系统介绍WIN98或WIN XP系统的进入方法) 2.用A和U命令输入和检察程序(注程序空间的选取)。 3.用E和D命令输入和检察数据(注数据空间的选取)。 4.用T、G或P命令运行。 5.检察运行结果,并调试程序。 6.用不同数据反复验正程序的正确性。 7.综合实验结果,得出结论或感受。
实验三 分支程序设计与调试
三.实验步骤(根据具体题目细化) 1.进入DOS模式界面窗口,进入DEBUG。(根据实验 室系统介绍WIN98或WIN XP系统的进入方法) 2.用A和U命令输入和检察程序(注程序空间的选取)。 3.用E和D命令输入和检察数据(注数据空间的选取)。 4.用T、G或P命令运行。 5.检察运行结果,并调试程序。 6.用不同数据反复验正程序的正确性。 7.综合实验结果,得出结论或感受。
实验一熟悉使用调试工具软件DEBUG
实验一熟悉使用调试工具软件DEBUG引言调试是软件开发过程中不可或缺的一部分。
通过调试工具软件DEBUG,我们可以查找和修复程序中的错误、检查变量的值、跟踪代码的执行路径等等。
本实验旨在帮助学生熟悉DEBUG的基本功能和使用方法。
一、实验目标1.熟悉DEBUG软件的界面和基本功能;2.学会使用DEBUG软件进行程序的调试和跟踪;3.掌握DEBUG软件中的断点设置和单步执行等功能。
二、实验环境1. 操作系统:Windows 10;2.调试工具软件:DEBUG。
三、实验步骤[DEBUG软件界面截图](1)Registers窗口显示寄存器的内容,包括通用寄存器、段寄存器等;(2)Disassembly窗口显示汇编指令的内容;(3)Dump窗口显示内存中的内容;(1)r:显示寄存器的内容;(2)u:显示当前汇编指令的地址和指令;(3)d:显示内存中的内容。
通过执行这些指令,我们可以查看和了解程序的运行状态和内存存储的内容。
(1)g:运行程序;(2)t:执行一条指令,并显示执行结果;(3)p:执行一行汇编代码,并显示执行结果。
通过执行这些指令,我们可以跟踪程序的执行路径和变量的值。
6. 在Disassembly窗口中,双击一条汇编指令可以设置断点。
设置断点后,程序执行到断点处会自动停止。
在调试过程中,我们可以查看断点前后的变量值,检查程序是否按照预期执行。
(1)bp:查看断点列表;(2)bl:清除断点列表中的断点;(3)bd:删除一个断点。
通过执行这些指令,我们可以管理和控制断点,实现更精细的调试过程。
8. 在DEBUG软件界面中,点击工具栏上的“跟踪”按钮,可以选中“Trace over”、“Trace into”和“Animate”等选项。
这些选项分别表示在执行过程中是否显示详细过程、是否跳过函数调用、是否动画演示执行过程等。
通过选择不同的选项,我们可以根据需要自定义调试过程。
四、实验总结通过本次实验,我们了解了DEBUG软件的基本功能和使用方法。
试验一调试工具DEBUG的使用
5)SP的中文名称?________,当前SP=______,为何变小?
____________________________
〈操作〉-t
6)刚执行的指令是:______________
〈操作〉-t
7)刚执行的指令是:______________
相关单元____变为______.
〈操作〉-t
code ends
end start
7、单步运行程序,分别记录运行上述程序中粗体部分时所对应的目标操作数中的内容。
【思考题】
1、上述一(1)程序中所完成1+2+3+…+100的功能,ax中保存最后计算结果,如果cmp bx,100,改成cmp bx, 400,AX中是否为1+2+3+…+400的结果,为什么?如果需要完成这种功能,应该怎样处理?
2)程序的入口地址=?_________________
(2)用断点命令观察执行结果
-g 10
回答:
3)AX=________ BX=________
对这2个寄存器的用途解释一下:______________________
(3)单步执行
用-q先退出DEBUG,重新进入DEBUG,debugex1.exe
〈操作〉-u 0 10
〈操作〉-r
〈操作〉-t
回答:
4)DS=______的两个字节,存放在堆栈段的哪两个地方(字节地址)?__________________
说明:用d ss:偏移量可观察到堆栈段的数据,以此验证。
〈操作〉-t
说明:此时执行了mov ax,0指令。
〈操作〉-t
说明:此时执行了PUSH AX指令。
中国石油大学微机原理 实验一 DEBUG的使用
试验一寻址方式和DEBUG的使用什么是DEBUG?DEBUG是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计常用的调试工具。
在DEBUG环境下,可直接检查和修改寄存器和内存的值,调试和运行程序,使用户进一步了解CPU内部的环境。
DEBUG程序的启动:在DOS的提示符下直接键入命令C:\>DEBUG ↙,进入DEBUG调试程序后,会出现DEBUG提示符“-”,此时就可以使用DEBUG命令了。
在XP环境下,用鼠标点击“开始”→“所有程序”→“附件”→“命令提示符”。
出现:C:\ Document and Setting \ Administrator >_>CD C:\ ↙C:\>在C:盘的根目录下C:\>debug ↙进入DEBUG调试程序后,会出现DEBUG提示符“-”,此时就可以使用DEBUG命令了。
XP环境下Dos窗口大小的切换用 Alt +↙熟悉DEBUG几个常用命令的功能及使用方法:(8个)1、R命令 (Register)。
功能:查看和修改寄存器的值。
格式:-R↙在R命令后面直接打回车,显示当前CPU 内部所有寄存器的值、标志位状态及将要执行的下一条指令。
若要显示修改某个寄存器的值,直接在R 后面输入该寄存器的名,然后回车,这时会显示该寄存器的当前值,新值直接输入即可。
注意:-R F慎用!无目的修改标志位状态会造成CPU状态混乱,不建议用。
-R 寄存器↙如:-R AX ↙AX 0000 ( 0000 当前值 ):1234 ↙( 1234 新值)讲义第44页,用R命令修改实验内容第一部分12个寄存器的值AX=1020H BX=5060H CX=A0B0H DX=E0F0H SP=FFFFH BP=0200H SI=3040H DI=7080H DS=1200H ES=1300H SS=1400H CS=1100H 2、D命令 (Dump)。
功能:显示存储器单元的值。
格式:-D 段寄存器名:起始地址在使用D命令之前,首先要明白,内存已经被划分为4个段,即:代码段CS、数据段DS、堆栈段SS和附加段ES。
微机原理及应用实验教程参考答案
DATA SEGMENT
DW 6666H, 7777H, 8888H, 9999H, 0AAAAH, 0BBBBH, 0CCCCH, 0DDDDH, 0EEEEH, 0FFFFH
3) 用W命令将程序写入到一个指定的地方或由计算机选择转载地址。
例:-W xxxx:xxxx 或-W
(3)用Q命令退出DEBUG。
(4)用DEBUG 路径\文件名.COM 的方式,将刚才保存的文件重新装入到内存。
(5)用U命令,查看程序转载的地址。
(6)用G命令运行程序。
例:-G=xxxx:xxxx 从程序转载处的地址开始运行
2、求某数据区内负数的个数。
设数据区的第一个单元存放数据的个数,从第二个单元开始存放数据,在最后一个单元存放结果。
参考程序一如下:
STACK SEGMENT STACK
DB 32 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX, 0001H
MOV BL, 02H
A1: MOV AL, BL
INC BL
MUL BL
ADD DX, AX
CMP AX, 00C8H
JNA A1
INT 03H
CODE ENDS
END START
参考程序二、(数据段内的数据可根据需要改变)
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
(2)用MASM.EXE编译源程序,编译无错后,生成相应的OBJ目标文件。
(3)用LINK. EXE 连接OBJ文件,生成可执行的EXE文件。
(4)运行程序:根据需要,可选择直接通过文件名的方式运行程序,或者是用DEBUG将可执行的EXE文件跳入内存后,用G命令运行。
实验一:调试工具DEBUG的使用
《微型计算机技术实验》实验一:调试工具DEBUG勺使用一.实验目的掌握调试工具DEBUGS使用方法,理解汇编指令、存储单元和寄存器等有关概念,能够对简单的汇编语言程序进行调试。
二.实验内容(1)学习调试工具DEBUGS使用方法,熟悉DEBUG常用命令的功能和用法。
(2)利用DEBUG S试简单的汇编语言程序,体会汇编指令的功能、寄存器的作用、存储单元地址与内容的概念和作用、以及程序的执行过程。
三.实验要求(1)掌握DEBUGS常用命令和基本的程序调试方法(2)熟悉和掌握指令系统常用指令的功能和用法,能熟练运用DEBUGS试工具调试简单的程序四.实验指导1、DEBUG命令使用1)键入DEBUG进入DEBUG控控制状态,显示提示符'-'例如:C:\DEBUG2)用命令F 100 10F 'A' 将'A'的ASCII码填入内存。
(命令格式:F<范围><单元内容表>)3)用命令D 100 10F观察内存中的十六进制码及屏幕右边的ASCII字符。
(命令格式:D<地址范围>)4)用命令F 110 11F 41 重复上二项实验,观察结果并比较。
5)用命令 E 100 30 31 32 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码?(命令格式:E<地址X批单元内容表>)6)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
7)用F命令将AX,BX^容改写为1050H及23A8H(命令格式:R<寄存器名>)2、常用指令练习1)内存操作数及各种寻址方式使用①用A命令在内存100H处键入下列内容:(注意:MOV传送指令,INC加一指令QEC减一指令)-A 0100MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE P TR[BX],20MOV DL,39INC BX****:010D MOV DX,75AB /MOV WORD P TR[BX+SI+2],2846(在此按下CTRL+退出A 命令)② 用T 命令逐条运行这些指令。
微机原理与接口技术(实验一)
实验一汇编语言上机调试工具DEBUG的使用一、调试工具DEBUG使用介绍DEBUG是为汇编语言设计的一种有效工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
DEBUG是独立可执行的程序。
1、 DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [驱动器][路径][文件名]屏幕上出现―-‖符号表示已进入DEBUG如键入文件名则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如未键入文件名,则用户可以用当前存储器的内容工作,可以执行DEBUG的各种命令2、常用DEBUG命令及其操作① _A(汇编)命令格式:A[地址] ;表示对以下输入的指令进行汇编说明:该命令未指定地址时,用CS:100H或上一次A命令的后续地址作起始地址。
输入出错时,显示:ERROR,并重新显示当前地址,等待输人。
举例:_A enter显示:CS段地址:起始偏移地址(输入要汇编的指令)例: 12FE:0100 …………;其中12FE为CS的段基址② _D命令:查看存储器内容格式:D[地址]、或D[范围]说明:该命令用于显示部分内存中的内容。
缺省的段地址是DS,缺省的偏移地址是100H 或上一次D命令的后续地址,缺省的长度为80字节。
显示的格式为:地址十六进制码 ASCII码不可打印字符的ASCII码用‗.‘显示,第一行自动调整边界。
举例:- D15 120该示例显示数据段中偏移地址从15H至120H间的数据区内容。
例: –d 0100 0120 ;查看数据段从偏移地址0100单元开始, 到0120单元的内容。
③ _E命令:显示和修改内存单元内容格式:E[地址]说明:该命令用于显示指定内存单元的内容并等待输入新的值。
举例:- E DS:01000F0E:0100 00.显示0F0E:0100单元的内容为00,小数点表示等待输入新数值,但通过键盘输入数值01后,01显示在小数点右边,如按下空格键后,出现下一个单元的内容在等待输入数据,若要退出E命令可按回车键。
微机原理 实验1(DEBUG的使用)
(3)显示和修改标志位状态 ) 格式: 格式:RF 若不需要修改任一个状态标志,则直接按 若不需要修改任一个状态标志,则直接按enter键; 键 若有一个或多个标志需要修改, 若有一个或多个标志需要修改,则可以输入此标志的 相反值。输入的标志的次序是无关的,输入的各个标 相反值。输入的标志的次序是无关的, 志之间,可以没有空格。 志之间,可以没有空格。 在调试程序DEBUG中提供了测试标志位的手段,它用符 中提供了测试标志位的手段, 在调试程序 中提供了测试标志位的手段 号表示标志位的值。每种标志位的符号表示如下表: 号表示标志位的值。每种标志位的符号表示如下表:
4、运行命令G(Go) 、运行命令 ( ) 格式: 格式:G [=address1] [address2 [address3 . . . ] ] 说明: 指定了运行的起始地址, 说明:address1指定了运行的起始地址,如不指定则从 指定了运行的起始地址 当前的CS:IP开始运行。后面的地址均为断点地址,当 开始运行。后面的地址均为断点地址, 当前的 开始运行 指令执行到断点时, 指令执行到断点时,就停止执行并显示当前所有寄存器 及标志位的内容和下一条将要执行的指令。 及标志位的内容和下一条将要执行的指令。
* 地址的格式为: [段地址 偏移地址 地址的格式为: 段地址 段地址:] 其中,段地址可以是段寄存器名,也可以是一个数值。 其中,段地址可以是段寄存器名,也可以是一个数值。若 命令中没有指定段地址, 命令自动显示DS段的内容 命令中没有指定段地址,则D命令自动显示 段的内容 。 命令自动显示 如:D DS:0100 、D 0400:0200、D 0100 、 * 范围的格式为: 范围的格式为 段地址:] (1)[段地址 开始偏移地址 结尾偏移地址 ) 段地址 * 结尾地址只允许有地址位移量,不允许有段地址 结尾地址只允许有地址位移量, 如:D CS:100 CS:110 是错误的。 是错误的。 应为: 应为:D CS:100 110 段地址:] (2) [段地址 开始偏移地址 ) 段地址 L长度 长度
实验一 DEBUG调试工具及寻址方式练习
实验一DEBUG调试工具及寻址方式练习一、实验目的1.学习使用DEBUG程序的各种命令。
2.了解计算机取指令、执行指令的工作过程。
3.掌握用DEBUG调试自编程序的方法。
4.熟练掌握立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、等几种寻址方式。
二、实验内容1.用R命令查看寄存器的数据,并分别将CS、DS、IP、SS修改为1000H、1500H、2000H、2500H,同时记录标志寄存器各位的状态。
2.用命令D查看DS:200~227内存块内容,用命令E分别改写其数据,再次显示修改后的结果。
3.用A命令编写一段程序,计算BX+CX+DX。
要求用R命令预先设置BX、CX、DX几个寄存器的值。
用U命令反汇编该程序,查看各指令机器码及存储位置。
并用T命令单步执行该程序,记录其执行结果及PSW各位的状态变化。
4.用A命令编写程序,要求采用立即寻址方式实现给AX和BL分别赋值。
并用T 命令执行,查看程序运行结果。
5.用A命令编写程序,要求采用寄存器寻址方式,实现将AX与BX内容的差值。
(减法指令格式为SUB DST,SRC,其中SRC为源操作数,DST为目的操作数)并用T命令执行,查看程序运行结果。
6.采用直接寻址方式,实现将地址为3000H的内存单元中数据传送至BX寄存器,用A命令编写程序实现。
要求预置3000H单元数据,用T命令单步执行,并记录运行结果。
7.采用寄存器间接寻址方式,实现将地址为5000H的内存单元中数据传送至AX寄存器,用A命令编写程序实现。
要求预置5000H单元数据,用T命令单步执行,并记录运行结果。
8.预设SI=0100H,(DS)=2000H,(21100H)=6789H。
已知偏移量D=1000H,采用寄存器相对寻址方式实现给AX赋值为6789H,用A命令编写程序实现,用T命令单步执行,并记录运行结果。
三、实验报告按要求完成实验任务,将各题目在Debug环境下的运行及调试过程截图,以及各题目程序代码及图片附加到Word文档,完成实验报告,提交电子版实验报告。
实验一 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功能:用于查看和改变CPU寄存器的内容格式:R [<寄存器>]说明:当R命令后面不指定寄存器时,显示所有寄存器的内容例1-1 显示所有寄存器的内容-rAX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-2 修改寄存器的内容-r axAX 0200100-rAX=0100 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000DS=138A ES=138A SS=138A CS=138A IP=0100 NV UP EI PL NZ NA PO NC 138A:0100 B241 MOV DL,41例1-3 用RF命令可以显示和修改标志寄存器FR中的标志位,无论修改哪一位标志位,只需要键入该标志位的表示符号(如表1.1所示),并且标志位值的键入顺序可任意。
微机原理实验
实验一、DEBUG 调试软件的使用一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2.了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。
3.掌握各种寻址方式以及简单指令的执行过程。
4.掌握变量和标号的处理,数值的默认进位制。
二、实验内容1.设堆栈指针SP=2000H,AX=3000H,BX=5000H;利用堆栈实现将AX,BX的内容交换。
用DEBUG进行汇编和调试。
1.1 DEBUG的主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一.进入DEBUG状态二.DEBUG的命令1.汇编命令A该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
注意:汇编程序默认的数据是十进制,而DEBUG默认的数据是16进制,即DEBUG中没有二进制、八进制及十进制,只有16进制。
汇编命令格式为:-A? [段地址]:[偏移地址] 说明:[ ]表示可选项,若未指定地址,则默认地址为CS:0100H。
例:用汇编语言编写一个简单的加法程序。
输入的汇编指令有语法错误的,将提示“error”,再重新输入正确指令即可。
若程序输入完毕,发现某条指令输入错误,比如第三条语句输入有误,就从该指令的偏移地址开始汇编(即-A 106)。
如果新输入的指令所占用的内存空间跟旧指令一样,修改完回车退出汇编即可;如果新输入的指令所占用的内存空间比旧指令少,可在多余的内存空间输入“NOP(空操作,占一字节)”指令;如果新输入的指令所占用的内存空间比旧指令多,就必须将后面的所有指令重新输入。
思考:汇编程序时,偏移地址为何不是连续的,它是如何变化的?(参考第6小点)2.命名命令N读(L)/写(W)程序前,必须先命名,即该命令结合读(L)/写(W)命令使用。
(参阅4、5)例:-N EX1;给程序文件命名为EX1。
3.检查和修改寄存器命令R4.写盘命令WW命令没有任何参数时,与命令N配合使用进行写操作,使用W命令前在BX:CX中应写入文件的字节数。
实验一 熟悉使用调试工具软件DEBUG
实验一熟悉使用调试工具软件DEBUG实验一熟悉使用调试工具软件debug实验一熟悉调试工具软件调试编写汇编语言时,如果源程序中存在语法或格式上的错误,在汇编和链接过程中都可以被发现并得以纠正。
但是如果在源程序中存在逻辑错误时,就只能通过调试来纠正了。
常用的调试工作软件是debug。
debug提供了修改寄存器和内存单元内容的命令,可以方便地修改寄存器及内存单元的内容,为调试和修改程序带来的方便。
1.调试启动在windows环境下,点击开始栏里的运行窗,输入debug。
2、debug的主要命令这里只介绍几个常用的调试命令。
有关其他命令,请参阅相关文献。
1)r命令R命令用于查看和修改寄存器的值。
在提示符“-”下输入命令r,debug将会显示出当前所有寄存器和标志位的状态。
在r后输入相关寄存器名称,以修改相关寄存器值。
2) D命令d命令作用:显示内存区域的内容。
在提示“-”时执行命令d,以观察当前存储单元的内容。
用命令d显示内存区域的内容时,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ascii码的形式显示内存值。
每行最多显示16个字节的内容。
命令D可以接受或忽略参数。
当调试启动时,将DS的值设置为X。
当省略该参数时,命令d的显示内容从X:100开始,每次显示128字节。
将来在没有参数的情况下执行命令d时,debug将根据最后一个位置继续显示。
带参数时debug能够显示指定地址范围的内容。
带参数的方式有三种:方式一:d[起始位置]。
debug从起始位置开始显示128个字节的内容。
在提示符“-”下执行命令d1af5:100。
观看命令执行结果。
模式二:D[开始位置][结束位置]。
调试从开始位置开始,并一直显示到结束位置。
在提示“-”时执行DDS:1001ff命令。
观察命令执行结果。
方法3:D[起始位置][l长度],长度由l参数标记。
Debug显示从起始位置开始的指定长度的内容。
在提示“-”时执行DDS:100l10命令。
微机原理实验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 按单步、设置断点等方式执行程序,检查程序运行过程中的中间结果,以便寻找程序出错的原因。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一DEBUG调试工具、数据传送指令
一、实验目的
1、熟练掌握DEBUG常用命令的使用。
2、掌握数据传送类指令的使用。
二、实验内容
注:debug所有数均看作16进制数,所有数均不需加H符号。
1.输入以下命令查看内存单元内容
(1)-D
-D DS:100
-D DS:100 110
-D SS:200
(2)-E100f2 ab 12 34
-D 100
(3)运行下两条指令,并用D命令查看对应内容
-E200 F364 2345
-E 100eb 'abcd' 34
2.(1)运行R命令,查看AX内容及标志寄存器的内容,同时查看下一条要运行的指令。
(2)用R修改BX内容为12H,DX寄存器的内容为1A2BH。
3.运行汇编命令-A 100后,将语句MOV AX,1234、MOV BX,5678
写入后用-T=100运行第一条指令,查看运行结果;再用-T命令运行第二条语句,查看运行结果。
4.用反汇编命令U查看汇编结果:
-U100
-U100108
5.用DEBUG进行调试
MOV AX,12
MOV BX,34
PUSH AX
PUSH BX
POP BX
运行之前用R查看:SP=__,运行上述语句后SP=__,AX=__,BX=__。
6.运行下列指令,并查看所对应的内存单元容。
MOV AX,1122
MOV BX,100
MOV[BX],AX
7.运行下列指令看SP变化
POP BX
POP AX
问运行前
运行后
(2)PUSH AX
POP AX
PUSH BX
POP BX 问运行前后SP有什么变化
8.从代码段中偏移地址EA为400H的单元开始写入下列指令,单条看运行结果运行前查看AX=____BX=____EA为150H的字单元内容=____EA为160H字单元内容=____
MOV AX,1122 ;AX=____
MOV BX, 3344 ;BX=____
MOV [150], AX ; EA为150H的字单元内容为____
MOV [160], BX ;EA为16H的字单元内容为____
MOV CX, [160] ;CX=____
XCHG [150],CX ;EA为150H的字单元内容为____
XCHG [160],CX ;EA为160H的字单元内容为____
运行后记录标志寄存器的内容:____
其对应值为(1,0):____
三、实验要求:认真做实验,写实验报告。
参照课本P147
2 DEBUG常用命令
(1),(2),(4),(6),(8),(10)。