8086虚拟环境安装流程+DEBUG使用方法
- 格式:pptx
- 大小:2.37 MB
- 文档页数:39
实 验 一 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提示符“-”状态,表示汇编命令已结束。
32位微机原理与接口技术实验报告
姓名王学杰专业计算机应用技术班级1362班
课程32位微机原理实验项目调试工具Debug的使用及基本指令用法
【实验目的】
①掌握Debug调试工具的的使用方法
②调试8086的各种指令用法
【实验设备】
PC机一台或者QTH-2008PC实验设备一套
【实验内容】
⑴ Debug的使用
①Debug的进入和退出
在DOS提示符下键入:DEBUG ↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG令。
② 修改CPU 内部的各寄存器 观察各寄存器的内容
显示并修改AX的内容
将AX的内容改为1234H
显示并修改标志寄存器的内容
将标志寄存器的OF置为OV:DF置为DN
③观察和修改内存单元的内容
④输入程序
⑤单步执行程序
⑥反汇编程序
⑦执行一段程序。
实验一熟悉8086指令编程方法及用DEBUG调试程序的方法一.实验目的1.掌握用DEBUG调试汇编程序的方法2.学习8086微处理器的加法运算,传送等指令的用法二.实验内容1.学会如何在DEBUG中建立,查看,调试,修改和运行汇编语言程序的全过程2.学会在DEBUG环境下调试自己编制的程序三.编制程序1.编制两个存放在寄存器中的32位二进制数相加程序2.编制两个存放在寄存器中的4位十进制数(BCD码)相加程序3.编制两个存放在内存中的32位二进制数相加程序四.实验步骤编制程序1:设一个32位二进制数的低16位放在AX,高16位放在CX中;另一个32位二进制数的低16位放在BX,高16位放在DX中,最后的结果存在CX,AX中,若还有进位位则存放在在SI中ADD AX,BX 将两个数的低16位相加,进位存到CF中ADC CX,DX 将两个数的高16位与CF相加,进位存到CF中MOV SI,0 将SI清零ADC SI,0 将进位位存至SIHLT给AX,BX,CX,DX分别赋值分步测试:给AX,BX,CX,DX重新赋值用G命令设置断点并运行:编制程序2:设一个4位十进制数(BCD码)低2位存在AL,高2位存在AH中;另一个4位十进制数(BCD码)低2位存在BL,高2位存在BH中,最后的结果存在AX中,若还有进位则存放在CX中ADD AL,BL 将两个数的低2位(即BCD码8位)相加,进位存到CF中DAA 对AL中的数进行调整,将16进制转换成10进制MOV DL,AL 将AL中的数存储到DL中MOV AL,AH 将第一个数的高2位存储到AL中ADC AL,BH 将两个数的高2位与低2位的进位CF相加,进位存至CF中DAA 对AL中的数进行调整,将16进制转换成10进制MOV CX,O 对CX清零ADC CX,0 将进位存至CX中MOV AH,AL 调整结果顺序MOV AL,DLHLT给AX,BX,CX,DX赋值编制程序3:与第一个程序原理相似,但数据初始存在内存中,不能直接调用,先转移到寄存器中。
实验一:Debug使用进阶及80X86汇编初步实验目的:1、通过本次实验熟悉debug工具的使用及DOS系统功能调用。
2、掌握debug编程基本语言,并运用之实现求一些毫无规律任意数的平方和实验仪器:PC机实验内容:课堂上曾书写一个求12+22+……+102的示例程序(见后面附录),请改写该程序,实现求一些毫无规律的任意数的平方和。
将这些数定义在内存中,假设这些数据都是字节型的非零无符号数(即1~255),请选用合适的Debug命令定义它们,约定数据值0作为结束标记。
要求:将结果放在数据寄存器中,请编写程序,并设计实验过程(用合适的debug命令),验证程序执行的正确性;若结果要求存放在内存中,请编写程序,并设计实验过程(用合适的debug命令),验证程序执行的正确性;注:编写程序和定义初始数据、查看程序运行结果都在Debug下直接进行。
每次运行程序时请改变这些平方和数据的值以及数据元素个数,以多方验证程序正确性。
实验提示:程序中需要用到寄存器间接寻址方式,示例语句:MOV SI, 0200;MOV BL, [SI]附:课堂上的示例程序实验步骤:1、启动debug程序鼠标单击“开始->程序->附件->命令提示符”,打开DOS(其实虚拟DOS)窗口,出现命令提示符键入debug并回车,出现debug程序的提示符,一个短杆。
2、在界面内输入如下指令:AMOV DX,0000 将寄存器DX赋值为0MOV SI,0200 将SI赋为0200地址MOV BL,[SI] 将SI地址的值赋给BLCMP BL,00 比较BL 与0的值JZ 0116 当BL值为0时跳转至0116即程序终止MOV AL,BL BL赋给ALMUL BL 做乘方运算ADD DX,AX 把AX的值与DX值相加并传到DX中INC SI SI的值加1JMP 0106 跳至0106进行循环INT 20 结束程序3、对地址的内容赋值如下:E 0200 1 2 3 4 5 0说明:0为中断值,当BL得值为0时程序终止,对SI地址中的值可以任意赋,以达到求一些毫无规律的任意数的平方和。
8086汇编语言上机调试步骤1、在网络课堂-微机原理与接口技术-实验指导-汇编工具下载,下载汇编工具并解压,文件夹名为“masm”。
2、用鼠标点击“masm”文件夹。
进入该文件夹后将看到 MASM.EXE,LINK.EXE , DEBUG.EXE3个文件进行复制操作。
3、用鼠标点击“我的电脑”再点击D: 盘,并在 D: 盘上建立新的“ MASM”文件夹,最后将上面的3个文件全部复制到该文件夹中。
(注意实验所有的文件都放在该文件夹内4、用文本编辑软件UltraEdit-32、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源文件的扩展各一定要是“.asm”如: example.asm 。
(建议用记事本输入源程序,另存时,保持类型选择“所有文件”如图所示5、进入MS-DOS方式 ( 从开始>程序>附件>命令提示符或者(从程序 > 运行输入“cmd”回车,进入MS-DOS环境。
6、进入D:>MASM文件夹7、显示MASM文件夹内所有文件“dir”命令8、在 DOS 提示符下进行汇编、连接、动态调试等操作。
例如: 对源文件 example.asm 进行的操作D:\MASM\MASM example.asm;汇编源程序操作D:\MASM\LINK example.dbj;连接并生成扩展名为 .EXE 的可执行文件D:\MASM\DEBUG example.exe;对可执行文件进行调试9、要求掌握的调试命令(在 DEBUG 中使用的命令a: U - 反汇编命令用法: -U 代码段地址:起始偏移地址如:-U CS:100b: D - 显示内存中的数据命令用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20c: T - 单步执行程序命令用法: -T 要执行的指令条数如:-T 3d: G - 连续执行程序命令用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址如: -G=CS:100 106注意: 结束地址一定要是操作码的所在地址e: R - 查看和修改寄存器数据命令用法: -R 回车如:-R AXf: F - 对内存单元填充数据命令用法: -F 数据段地址:偏移首地址偏移未地址填入的数据如: -F DS:100 120 ffg: Q - 退出”DEBUG“应用程序命令10、应用例子;二进制到BCD转换(a.asm;将给定的一个二进制数,转换成二十进制(BCD码DATA SEGMENT RESULT DB 3 DUP(?DATA ENDS CODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, 123MOV CL, 100DIV CLMOV RESULT, AL ; 除以 100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT+1, AL ; 余数除以 10, 得十位数MOV RESULT+2, AH ; 余数为个位数JMP $ CODE ENDSEND START汇编源程序操作:D:\MASM>MASM a.asm ;D:\MASM>LINK a.OBJ;对可执行文件进行调试的操作:D:\MASM>DEBUG A.EXE--U CS:0000 ;用反汇编命令”U 代码段地址:起始偏移地址“显示出程序的表示符执行程序前观察内存中的数据-D DS:0000 ;用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-G=CS:0000 001E ;连续执行程序命令代码段地址:指令的起始偏移地址指令的结束偏移地址执行程序后观察内存中的数据(结果-D DS:0000 ; 用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据-R IP 修改IP寄存器中的数据IP 001E 显示修改前的数据:00 输入修改的数据-T ;单步执行程序命令(执行一条指令-T3 ;执行3条指令-R -R AX AX 007B :1111 -R ;查看寄存器数据命令;查看和修改寄存器数据命令;查看寄存器数据命令 -D DS:0000 ;用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址” 显示内存中的数据 -F 数据段地址:偏移首地址偏移未地址填入的数据 -F DS:0000 0030 DF ;对内存单元填充数据 -D DS:00 ;观察内存中的数据-Q ;退出”DEBUG“ 应用程序命令。
启动DebugWin7 32位&xp可以点开始→运行→输入cmd→输入debug没找到运行的可以同时按键盘上的WIN图标键+R启动运行输入debug 回车Win7 64位&win8&win10网上下载DOSbox及Debug文件我已经上传群里了把Debug文件放在D盘根目录下,不要放文件夹里而DOSbox直接安装虽然写的是win7 32位但是win8 win7 64位也可以用如果你懂DOS怎么打开文件,那你可以直接关闭这个文档了安装后点运行软件有2个窗口,上面的那个窗口别管他,是一个虚拟运行程序然后依次输入Mount c d:\ 回车(注意/ \别搞错了)C:回车Debug 回车Debug教程看的懂英语的同学可以直接输入?就可以打开帮助,里面有debug所有的命令? 显示Debug 命令。
a 输入并汇编8086/8087/8088 汇编源程序。
c 比较内存的两个部分。
d 显示内存单元的内容。
e 从指定地址开始,修改内存的内容。
f 使用指定值填充一段内存。
g 连续运行在内存中的机器指令程序。
h 执行十六进制运算。
i 显示来自特定端口的1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容n 为l 或w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 退出Debug。
r 显示或改变一个或多个寄存器内容。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和Debug 下一步要执行的指令的解码形式。
u 反汇编机器指令成汇编指令并显示相应的源程序指令。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
我依次解释一下每个命令的意义和用法A命令输入A后回车即可进入汇编模式前面是逻辑地址,可直接在后面输入汇编命令注意:输入的命令中不能带16进制符号H,debug默认为16进制退出汇编模式直接按回车如果A后面带有地址就会在地址处开始汇编可输入:a073F:0000a0000a000a00a0这几个都是一个意思,系统会自动识别的如果不加地址,就会接着上次汇编后面继续开始C命令C命令是将2块内存的内容进行比较如这条信息的内容就是C 起始地址(073F:0100)终止地址(073F:0140)对比的地址(073F:0130)逻辑地址可省略高位0和DS地址2块长度一样,对比地址只用写出起始端就是把100到140的数据逐个和130到170的数据进行对比找出不一样的数据一样的数据不会列出来,列出来的都是不一样的数据或者这样输C 起始地址(073F:0100)长度(L10)对比段的起始地址(073F:0130)含义是一样的D命令显示内存中的数据D命令默认看8*16=128个数据,每一行开始是前面标的地址,然后依次加一如第一行073F:0100的数据是B0,073F:0101的数据是20,073F:010F的数据是00 还可以这样输D 起始地址0 终止地址3 然后显示储存在073F:0000到073F:0003的4个数据或者这样D 起始地址073F:0000 长度L100 就显示073F:0000后100个内存单元内的数据接着是E命令E命令和D命令是一起用的如是修改内存中073F:0100 即途中圈住的那个位置的数据,直接在点后输入你想改的参数就可以修改,如果不想修改,按回车退出073F:0100处的数据被修改了F命令使指定的数据值存入指定的为之中,如Error可以忽略了>_<!可以看到F 起始地址100 终止地址103 数据21 22 23 24然后内存中相应位置的数据就被更改了G命令用DOSbox运行debug的同学切记不要用这条命令,会死机的用CMD运行的可以无视上面那句话G命令是执行命令即执行你指定地址段的汇编程序运行如先编汇编程序从a100开始编然后g=100就是从100开始执行程序,一直到执行完连着的所有程序,即程序断点下面那句话是说程序已经执行完了如果输入g=100 10b 则只执行100到10b之间的程序,由于是断点形式,下面默认会打出执行完10b之后的个寄存器数据状态H命令计算两个十六进制数的和与差如前面的是和后面的是差I命令从计算机输入端口读取数据并显示如从3F8号端口读取数据并显示的命令为:I 3F8M命令将指定内存区域的数据复制到指定的地址去如M 起始地址100 终止地址13F 目标地址140 即把100到13F的数据复制到140以后N命令和W命令N设置文件名,为将刚才编写的汇编程序存盘做准备W 将刚刚编写的汇编程序存盘N 路径W 直接写由于我是用DOSbox运行的debug,没用设置磁盘,所以储存时找不到磁盘,不过用WIN7 32位和XP直接运行的不会出现这行字L命令从磁盘中将文件或扇区内容读入内存同样的原因找不到磁盘,如果找到了会在之后的内存中直接加载刚刚存的文件O命令向计算机输出端口送出数据如向90号端口发出数据20H:o 90 20T命令执行汇编程序,单步跟踪。
熟悉emu8086汇编语言调试环境实验报告=======================1. 实验目的-------本次实验的主要目的是熟悉并掌握emu8086汇编语言调试环境的使用,了解汇编语言的基本原理和编程方法,提升对计算机硬件和程序运行的理解。
2. 实验原理-------emu8086是一款用于学习和实验的8086微处理器模拟器。
它提供了一个集成开发环境(IDE),可以在此环境中编写、编译、调试和运行8086汇编语言程序。
3. 实验步骤-------以下是我们进行实验的具体步骤:步骤一:安装emu8086模拟器。
从官方网站下载并安装emu8086模拟器,确保正确安装并能够正常运行。
步骤二:打开模拟器并创建一个新项目。
在模拟器的IDE中,选择“文件”->“新建”->“项目”,然后为项目命名并选择存储位置。
步骤三:编写汇编语言程序。
在项目中创建一个新的汇编文件,使用8086汇编语言编写一个简单的程序。
例如,可以编写一个程序来输出“Hello, World!”到屏幕上。
步骤四:编译程序。
在模拟器的IDE中,选择“编译”->“编译全部”,将汇编文件编译成机器码。
步骤五:运行程序。
在模拟器的IDE中,选择“运行”->“运行”,或者直接按下F9键,来运行程序。
步骤六:调试程序。
如果程序运行出现问题,可以使用emu8086的调试功能来查找和修复错误。
在模拟器的IDE中,选择“调试”->“开始调试”,然后使用调试工具来检查程序的状态、寄存器和内存。
4. 实验结果-------通过本次实验,我们成功地编写、编译、运行并调试了一个简单的8086汇编语言程序。
我们实现了在屏幕上输出“Hello, World!”的目标,并且深入了解了emu8086模拟器的使用方法和8086汇编语言的编程技巧。
5. 实验分析-------通过本次实验,我们深入了解了8086汇编语言的编程方法和计算机硬件的基本原理。
实验一Debug和Emu8086软件的使用一、实验目的:(1)熟悉Debug软件和汇编语言开发环境。
(2)掌握Emu8086软件使用方法。
(3)了解汇编语言的程序结构、调试一个简单的程序。
(4)理解寻址方式的意义。
二、实验内容及要求:1、Debug的使用根据课本104页的实验1中的预备知识的说明,学习使用Debug软件。
编程实现:在显示器上显示字符串Welcome to TianHe college!两个64位无符号数相加2、Emu8086的使用(1)打开桌面上的Emu8086的图标,出现如图所示的对话框,选择【继续……】首次打开软件,界面中默认已有一段小程序。
该程序实现在屏幕上显示三段字符串的功能。
若用户需要自己重新编程,可点击工具栏的【new】图标,出现如图所示的对话框,选择编程所采用的模板。
选择不同的模板,在程序源代码中会出现如下标记:#MAKE_COM# 选择COM模板#MAKE_BIN# 选择BIN模板#MAKE_EXE# 选择EXE模板#MAKE_BOOT# 选择BOOT模板#MAKE_COM#最古老的一个最简单的可执行文件格式。
采用此格式,源代码应该在100H后加载(即:源代码之前应有ORG 100H)。
从文件的第一个字节开始执行。
支持DOS和Windows命令提示符。
#MAKE_EXE#一种更先进的可执行文件格式。
源程序代码的规模不限,源代码的分段也不限,但程序中必须包含堆栈段的定义。
您可以选择从新建菜单中的EXE模板创建一个简单的EXE程序,有明确的数据段,堆栈段和代码段的定义。
程序员在源代码中定义程序的入口点(即开始执行的位置),该格式支持DOS和Windows命令提示符。
这两种模板是最常用的模板(2)选择COM模板,点击【确定】,软件出现源代码编辑器的界面,如图所示:在源代码编辑器的空白区域,编写如下一段小程序:DATAS SEGMENTSTRING DB 'Welcome to TianHe college!', 0AH,0DH,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODE,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START代码编写结束,点击菜单【文件】【另存为……】,将源代码换名保存。
实验二Debug的使用(一)一、实验要求和目的1.熟悉Debug环境。
2.掌握常用Debug命令的基本操作。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。
三、实验涉及的主要知识单元在以后所有的实验中,都将用到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) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
下面说明在Windows XP中进入Debug的一种方法,在Windows 98中进入的方法与此类似。
单击【开始】菜单中的【运行】命令,打开【运行】对话框,在文本框中输入“command”后,单击【确定】按钮。
图2-1 选择【运行】命令图2-2 在文本框中输入“command”进入DOS方式后,如果显示为窗口方式,可以按下Alt+Enter键将窗口变为全屏方式。