微机原理实验指导书 1.docx
《微机原理实验指导书 1.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书 1.docx(31页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书1
实验一系统操作及程序调试举例
1.实验目的
学习并掌握实验系统的基本操作,为以后的实验打下基础。
2.实验设备
DICE-8086B实验系统一台
3.实验准备工作
系统一经连好,检查无误后,就可以通电运行。
系统提供两种启动方式,即:
类型
操作
显示
功能
热启动
按线路板左下角的复位开关
>WELCOMETOYOU!
复位CPU、接口,清断点
冷启动
上电复位
>WELCOMETOYOU!
复位CPU、接口,清断点,自检系统
系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。
4.实验内容及步骤
(1)系统操作练习
(一)
要求:
从3500内存单元开始建立0~15共16个数据。
程序流程图如下:
实验步骤
1输入与修改:
在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。
注:
在输入过程中,若发现本行有错误,则可以按“
”键删除并重新输入;若回车后系统提示“ERROR!
”,则要在原地址指针处重新正确输入。
输入程序后可通过反汇编查看程序。
(U操作)
2程序运行:
在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。
可参考(T操作,G操作,GB操作等)
3内存单元的修改与显示:
用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。
(分别参考前)。
运行程序观察从3500H单元开始连续存放的16个数据为多少?
任意修改AX的值,再运行程序,显示运行结果是否正确?
流程图及参考程序如下:
N
Y
地址机器码助记符注释
2000BF3500MOVDI,3500;设数据区首址
2003B90010MOVCX,0010;字节数送CX
2006B80000MOVAX,0000
20099ESAHF
200A8805MOVB[DI],AL;写入一字节
200C47INCDI;修改地址指针
200D40INCAX;修改数据
200E27DAA;十进制调整
200FE2F9LOOP200A;未填完转移
2011CD00INT
(2)系统操作练习
(二)
要求:
将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。
程序流程图及参考程序如下。
实验步骤
输入程序并检查无误;
运行以上程序;G=2000←┘
查看运行结果;分别查看在数据区3500H开始的连续16个单元的内容和3600H开始的内容是否相同。
即先D=3500←┘查看,后D=3600←┘查看。
在两个数据区的数据是不相同。
若不同调试运行,寻找程序错误所在。
若数据区3500H单元开始的连续16个单元的内容分别为:
23H,33H,43H,
45H,34H,44H,24H,20H,61H,62H,38H,30H,37H,66H,64H,0AH等,试运行程序,
观察从3600H单元开始的连续16个单元的内容应该为多少?
流程图及参考程序如下:
N
Y
地址机器码助记符注释
2000BE3500MOVSI,3500;建立源地址指针
2003BF3600MOVDI,3600;建立目的地址指针
2006B90008MOVCX,0010;字数送CX
20098B04MOVAX,W[SI];取一字
200B8905MOVW[DI],AX;送一字
200D46INCSI;修改指针
200E46INCSI
200F47INCDI
201047INCDI
201149DECCX
201275F5JNZAGAIN;未传完转移
2014CD00INT
(3)实验前的准备工作
要求在作所有实验前,大家利用课余时间完成以下程序的设计,并通过汇编生成列表文件(.LST)。
以便在输入程序过程中用到一些转移地址,或通过计算每个指令的字节数来计算其在转移指令的转移地址。
例如:
要求取X,Y,Z三数(字)的最大值,并把最大值放在MAX单元。
假若X,Y,Z,MAX分别在以3500H单元开始的连续区域。
则我们可以在下面准备实验时,可先编写源程序,然后进行汇编,并生成列表文件(.LST)。
若我们所取文件名为EXAM.ASM,且源程序内容这样实现:
DATASEGMENT
ORG3500H
XDW?
YDW?
ZDW?
MAXDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
ORG2000H
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
CMPAX,Y
JAEXGY
MOVAX,Y
XGY:
CMPAX,Z
JAEGMAX
MOVAX,Z
GMAX:
MOVMAX,AX
INT20H
CODEENDS
ENDSTART
则我们的汇编过程为:
在DOS提示符MASM当前目录下:
执行
DOS提示符》MASM(回车)
则系统会提示以下问题:
MicrosoftMACROAssemblerVersion3.00
(C)CopyrightMicrosoftCorp1981,1983,1984
Sourcefilename[.ASM]:
(输入要汇编的源程序名)EXAM(回车)
Objectfilename[EXAM.OBJ]:
(生成的目标文件名)(回车)
Sourcelisting[NUL.LST]:
(生成的列表文件名)(回车)
Crossreference[NUL.CRF]:
49698Bytesfree
WarningSevere
ErrorsErrors
00(显示警告和错误个数,这里必须为0时,才允许进行连接)
经汇编后生成的列表文件(EXAM.LST)如下:
0000DATASEGMENT
3500ORG3500H
3500?
?
?
?
XDW?
3502?
?
?
?
YDW?
3504?
?
?
?
ZDW?
3506?
?
?
?
MAXDW?
3508DATAENDS
0000CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
2000ORG2000H
2000START:
2000B8----RMOVAX,DATA
20038ED8MOVDS,AX
2005A13500RMOVAX,X;X=W[3500]
20083B063502RCMPAX,Y;Y=W[3502]
200C7303JAEXGY;符号地址XGY=2011
200EA13502RMOVAX,Y;Y=W[3502]
20113B063504RXGY:
CMPAX,Z;Z=W[3504]
20157303JAEGMAX;符号地址GMAX=201A
2017A13504RMOVAX,Z;Z=W[3504]
201AA33506RGMAX:
MOVMAX,AX;MAX=W[3506]
201DCD20INT20H
201FCODEENDS
ENDSTART
所以可得我们在实验环境下,可这样来编程序(设CS:
IP=0000:
2000)
地址助记符
2000MOVAX,0000
2003MOVDS,AX
2005MOVAX,W[3500]
2008CMPAX,W[3502]
200CJNB2011
200EMOVAX,W[3502]
2011CMPAX,W[3504]
2015JAE201A
2017MOVAX,W[3504]
201AMOVW[3506],AX
201DINT20
最后,再按以上步骤去进行。
即
(1)E3500(回车)在3500H~3505H内存单元输入十六进制数;
(2)输入程序;
(3)G=2000(回车),执行程序;
(4)显示3500H~3507H单元的内容,则在3506H~3507H单元中内容即为结果(X,Y,Z中的最大值)
软件实验
通过以下软件实验程序的调试,使大家熟悉8086/8088的指令系统,了解顺序、分支、循环、子程序四种基本结构的编程技术,掌握汇编语言程序设计方法以及如何使用实验系统提供的调试手段来排除软件错误。
实验二、数码转换及运算程序设计
一、实验目的
1.掌握不同进制数及编码间的相互转换的程序设计,加深对数码的了解;
2.掌握使用运算类指令编程及调试的方法;
3.掌握运算类指令对状态樗位的影响及其测试方法。
4.进一步熟悉调试程序的方法。
二、实验设备
DICE-8086B实验系统一台
三、实验内容及步骤
1、实验内容
(1)将ASCII码表示的十进制数转换为二进制数;
例如:
设在3500单元开始存放31323334,则转换后应为0C22。
(2)将十进制数的ASCII码转换为BCD码;
例如:
设在3500单元开始存放31323334,则转换后应为01020304等。
(3)将十六制数转换为ASCII码;
例如:
设在3500单元开始存放3B20,则转换后应为42333032。
参考程序:
地址助记符注解
2000MOVCX,0004
2003MOVDI,3500
2006MOVDX,W[DI]
2008MOVAX,DX
200AANDAX,000F;取低4位值
200DCMPAL,0A;判断是否“0~9”
200FJB2013;是则转2013
2011ADDAL,07;否则是“A~F”,加07
2013ADDAL,30;转换为ASCII码
2015MOVB[DI+0A],AL
2018INCDI
2019PUSHCX;保护循环计数器内容
201AMOVCL,04;移位次数送CL
201EPOPCX
201FLOOP2008
2021INT
(4)BCD码转换为二进制码。
例如:
设3500单元开始存放非压缩BCD码010203040506,则转换后应为0C0022003800。
(5)将二进制数转换为ASCII码
例如:
设3500单元开始存放4FFFH,则转换后为20479或97402。
在数据段中首址为3500H的X单元,3504H开始的Y单元及3508H开始的Z单元,且其数据如下:
DS:
3500A0651500
DS:
35049EB72100
DS:
3508
假定原数码在3500开始的内存单元中存放,转换结果存放在3520开始的内存单元。
(6)多字节加法运算
计算Z=X+Y,并将结果存入Z单元。
参考程序如下:
地址助记符注解
2000MOVAX,W[3500];X低位送AX
2003ADDAX,W[3504];X低位加Y低位
2007MOVW[3508],AX;存低位和
200AMOVAX,W[3502];X高位送AX
200DADCAX,W[3506];X高位加Y高位
2011MOVW[350A],AX;存高位和
2014INT
(7)BCD码减法运算
计算Z=X-Y,编写程序实现。
例如,X=40,Y=12,则Z=28。
(8)BCD码的乘法运算
计算Z=X*Y,试编写程序完成。
例如,X=12,Y=35,则Z=420。
例如,B=23,A=7,则C=3,R=2。
(9)开平方运算
用减奇数法可获得平方根的整数部分,是因为
。
设被开平方数为正整数,存放在3500H单元,参考程序如下:
地址(H)助记符注解
2000MOVAX,W[3500];取被开方数
2003MOVCL,00;清平方根
2005MOVDX,0001;奇数初值
2008SUBAX,DX;减奇数
200AJB2013;不够减则结束
200CINCCL;够减奇数个数计数
200EADDDX,02;形成下一个奇数
2011JMP2008
2013MOVB[350A],CL;存平方根
2017INT
2、实验步骤
(1)输入程序并检查无误;
(2)用编辑命令E在3500开始的单元中存放原数码;
(3)用G命令或T命令运行以上程序;
(4)用D命令查看运行结果;
(5)反复试几组数,考查程序的正确性。
四、实验要求
1.按要求绘制流程图,并编写程序。
2.通过实验验证所编程序的正确性,若运行不正确,应怎样进行修改。
3.写出实验结果。
4.分析实验过程中出现的问题。
实验三、分支、循环、排序及子程序设计
一、实验目的
1.掌握分支程序的结构,掌握分支程序的设计、调试方法;
2.加深对循环结构的理解,熟练掌握循环结构程序的设计方法及调试方法;
3.学习子程序的定义和调用方法,掌握子程序、子程序的嵌套、递归子程序的结构,掌握子程序的设计及调试方法;
4.学习综合程序的设计、编制及调试方法。
二、实验内容
1.设计一数据块的搬移程序
提示:
源数据块和目的数据块有可能不重叠,有可能部分重叠,也有可能全部重叠。
请在一个程序中来完成。
2.
根据条件求和
求S=1+2*3+3*4+……+N(N+1),直到N(N+1)项大于200为止。
参考程序如下:
地址(H)助记符注解
2000MOVDX,0001;和S送初值1
2003MOVBL,02
2005MOVAL,BL;送被乘数
2007INCBL;送乘数
2009MULBL
200BADDDX,AX;累加和
200DCMPX,00C8;AX>200吗?
2010JBE2005
2012INT
3.求某数据区内负数(正数或零)的个数
地址(H)助记符注解
2000MOVDI,3000;送数据区首地址
2003MOVCL,B[DI];送数据个数
2005XORCH,CH;CH清0
2007MOVBL,CH;BL送0
2009INCDI;指针指第一个数据
200ATESTB[DI],80;符号位是否为1
200DJZ2011
200FINCBL;负数个数累加
2011INCDI
2012LOOP200A
2014MOVB[DI],BL;存结果
2016INT
4.求无符号字节序列中的最大值及最小值
5.数据排序
三、实验步骤
1.输入程序并检查无误;
2.用编辑命令E在指定存储单元中存放操作数;
3.用G命令或T命令运行以上程序;
4.用D命令查看运行结果;
5.反复试几组数,考查程序的正确性。
四、实验要求
1.按要求绘制流程图,并编写程序。
2.通过实验验证所编程序的正确性,若运行不正确,应怎样进行修改。
3.写出实验结果。
4.分析实验过程中出现的问题。
硬件实验
硬件部分实验,可使学生进一步掌握微机系统的接口技术。
了解微机的中断系统、输入/输出系统、定时/计数器、并行接口、A/D、D/A转换等接口的硬件设计与编程技术。
实验四、8255并行接口应用实验
一、学习目的:
学习并掌握8255的各种工作方式及其应用。
二、实验设备
DICE—8086B实验系统一台
三、实验内容及步骤:
系统为8255提供的端口地址为60H~63H。
1、
8255接口应用实验
(1)(方式0输出)
按图1所示实验线路,编写程序,使8255端口A工作在方式0并作为输出口将其PA0~PA3通过74LS48BCD码七段显示驱动器,在数码管上循环显示“0~9”10个数。
实验参考程序如下:
地址助记符注解
2000MOVAL,82;控制字2002OUT63,AL;送控制字2004MOVAL,00;第一次显示“0”2006CMPAL,0A2008JZ2004;显示数=“10”转移200AOUT60,AL;输出所显数字200CCALL2013;调延时程序200FINCAL;显示数+12011JMP2006;显示下一数2013PUSHAX;延时子程序2014MOVCX,01002017MOVAX,0560201ADECAX201BJNZ201A201DLOOP2017201FPOPAX2020RET
实验步骤:
①按图在DICE—8086上连接实验线路;
②输入源程序并运行,观察七段数码管是否循环显示“0~9”10个数;
4按[RESET]中止程序运行,停止显示。
1.8255接口应用
(2)(方式0输入输出)
按图2所示实验线路,编写程序,使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B,端口A输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入/输出功能。
要求8255先检测开关组DIP2的状态,然后根据开关的闭合情况分别点亮对应的发光二极管。
输入程序并运行,拨动开关组DIP2,观察发光二极管的点亮情况。
3、8255接口应用(3)(方式1输入和方式0输出)
按图3所示实验线路,编写程序,使8255端口A工作在方式0作为输出端口,端口B工作在方式1并作为输入口,则端口C在PC2成为选通信号输入端,
,PC0成为中断请求信输出端INTRB,当B口数据就绪后,通过发
负脉冲信号来请求CPU读取端口B数据,并送端口A输出显示。
输入程序并检查无误,运行实验程序,然后拨动开并组DIP2,准备好后,按动开关KK1,观察发光二极管的点亮情况。
四、实验要求
1.按要求绘制流程图,并编写程序。
2.通过实验验证所编程序的正确性,若运行不正确,应怎样进行修改。
3.写出实验结果。
4.分析实验过程中出现的问题。
实验五、8253定时/计数器应用实验
一、实验目的
1.熟悉DICE—8086B上的8253电路的典型接法;
2.掌握8253的工作方式及应用编程。
二、实验设备
DICE—8086B实验系统一台
三、实验内容及步骤
系统规定,8253的端口地址为40H~41H,且8253的0#通道与8259的0#中断源相连,作为实时钟中断信号;1#通道入口接1.8432MHz的信号源,输出接8251的收、发时钟端,供串行通讯用,这里1#计数器仅当作为一个分频器来用;2#通道作为开放接口,提供用户使用,并且在J6、J7接口引出。
1.8253计数器应用实验
设定8253的2#通道方式为方式0,用于事件计数,当计数值为5时结束,发出中断请求信号,并显示“M”,如图4连线图:
要求:
(1)按图4接线,编写程序;
(2)在0000:
003CH单元起填入IRQ7中断矢量,
即E0000:
003C12200000
(4)
运行程序,并拨动KK1开关,观察每按几次,屏上显示一个“M”字符。
为什么?
参考程序如下:
地址(H)助记符注解
2000INAL,21
2002ANDAL,7F
2004OUT21,AL;初始化8259
2006MOVAL,90
2008OUT43,AL
200AMOVAL,05
200COUT42,AL;初始化8253
200EHLT
200FSTI
2010JMP200A
2012MOVAX,014D;中断服务程序
2015INT10;显示“M”
2017MOVAX,0120
201AINT10;显示“空格”
201CMOVAL,20
201EOUT20,AL
2020IRET;中断返回
2.8253定时器应用实验
利用0#通道来定时中断(IRQ0),循环显示“0~9”10个数,其线路图见图5,
分析程序,画出程序流程图,并输入到实验系统中;
运行程序,观察显示屏上应连续一行一行地显示,直到用RST复位来中止程序运行为止;
修改8253的0#时间常数,再运行程序,观察显示的快慢。
四、实验要求
1.按要求绘制流程图,并编写程序。
2.通过实验验证所编程序的正确性。
,若运行不正确,应怎样进行修改
3.写出实验结果。
4.分析实验过程中出现的问题。
实验六、A/D转换和D/A转换实验
一.实验目的
1.了解A/D转换的基本原理,掌握ADC0809的使用方法;
2.了解D/A转换的基本原理,掌握DAC0832的使用方法。
二.实验设备
DICE—8086B实验系统一台;
螺丝刀一把;
示波器一台
三.实验内容及步骤
1.如图6所示实验线路,编写程序,从IN0号通道采样模拟信号并转换成数字量,在屏幕上显示,即IN0xx
参考程序如下:
地址助记符地址助记符
2000MOVAL,82
2002OUT63,AL
2004OUT00,AL
2006CALL2044
2009INAL,00
200BMOVCH,AL
200DANDAL,F0
200FMOVCL,04
2011SHRAL,CL
2013CMPAL,09
2015JG201B
2017ADDAL,30
2019JMP201D
2020MOVAH,06
2022INT10
2024MOVAH,01
2026INT10
2028MOVAL,CH
202AANDAL,0F
202CCMPAL,09
202EJG2034
2030ADDAL,30
2032JMP2036
203