华中科技大学计算机原理实验报告.docx
《华中科技大学计算机原理实验报告.docx》由会员分享,可在线阅读,更多相关《华中科技大学计算机原理实验报告.docx(46页珍藏版)》请在冰点文库上搜索。
华中科技大学计算机原理实验报告
《计算机原理与应用实验》课程
实验报告
电气与电子工程学院
2012级
姓名:
学号:
专业班号:
日期:
2014年1月7日
实验成绩:
评阅人:
实验评分表
基本实验
实验名称
实验分值
评分
实验一EMU8086软件安装与使用
实验二汇编语言实例讲解与程序编写
实验三基于Proteus软件8086最小系统硬件设计
实验四基于8086最小系统的汇编程序设计
实验五8255并行接口实验(演示实验)
设计性实验
实验名称
实验分值
评分
实验六工频测频接口电路设计与实现
教师评价意见
总分(100)
实验一:
EMU8086软件安装与使用
一、实验目的
通过本实验学习EMU8086软件的安装与使用。
二、实验设备
PC微机一台,Emu8086仿真软件
三、实验任务
1.安装Emu8086仿真软件。
2.利用Emu8086仿真软件编程。
四、实验原理
Emu8086仿真软件就是在Windows下的一种仿真软件,它可以仿真模拟8086的程序运行,并且可以直观地观察CPU寄存器的变化情况。
Emu8086-MicroprocessorEmulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。
这对刚开始学组合语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。
你可以在程序执行当中检视暂存器、旗标以及记忆体。
模拟器会在虚拟PC中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。
这个软件完全相容於Intel的下一代处理器,包括了PentiumII、Pentium4,而相信Pentium5也会继续支援8086的。
这种现象让8086程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086的另一个优势是它的指令比较小且相当容易学习。
五、实验内容
安装Emu8086仿真软件,熟悉菜单栏,工具栏的每个选项的作用,按照操作流程完成程序的编译、链接,并对编辑窗口中所编写的简单汇编程序进行仿真调试,最后能够输出正确结果。
六、实验过程及结果
1.EMU8086安装。
2.EMU8086使用,安装完毕,得到窗口如下图1-1:
图1-1Emu进入主界面
3.操作流程
(1)file->new->emptyworkplace,编辑程序,如下图1-2:
图1-2Emu程序编辑界面
(2)file->save,保存程序(**.asm格式),完成程序的编辑.
(3)assmbler->compile,完成程序的编译和链接,如下图1-3:
图1-3Emu程序编译完成界面
4.emulator->showemulator,开始仿真调试,如下图1-4:
图1-4Emu程序仿真调试界面
5.左键点击run运行程序,结果如图1-5:
图1-5Emu程序仿真调试结果界面
七、实验感想
在这次实验中,初步了解了8086仿真软件,对上课的一些知识有了更深刻的认识,知道其是如何工作的。
利用软件完成了几个实验,收获很多。
八、参考文献
[1]李继灿,谭浩强.微机原理与接口技术.北京:
清华大学出版社
[2]王爽.汇编语言.北京:
清华大学出版社
[3]沈美明,温冬婵.汇编语言程序设计.北京:
机械工业出版社
[4]许立梓.微型计算机原理及应用.北京:
机械工业出版社
实验二:
汇编语言实例讲解与程序编写
一、实验目的
学习所给的汇编程序示例,自己能亲自动手编写基本的汇编程序。
二、实验设备
PC微机一台,Emu8086仿真软件
三、实验任务
1.熟练掌握基本的汇编指令意义。
2.正确理解所给示例中每行代码的意义及作用。
3.按要求编写所给的3个题目的代码并正确显示结果。
四、实验原理
汇编程序规范编程:
使用汇编编程采用下面的编程规范能够极大简化编程过程,提高编程效率,同时能够保证功能的顺利实现,下文是规范化汇编程序的基本框架,一段典型的汇编程序主要包括数据段及其定义,堆栈段及其定义,最后一部分是代码的编写。
DATASSEGMENT;此处输入数据段代码
DATASENDS
;-----------------------------------------------
STACKSSEGMENT;此处输入堆栈段代码
STACKSENDS
;-----------------------------------------------
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
;此处输入代码段代码
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
以下以“hello”为例,介绍简单汇编程序的基本内容:
aaSEGMENT;数据段1
xxDB'Hello!
’;定义源串
aaENDS
;-----------------------------------------------
bbSEGMENT;数据段2
yyDB6dup(?
);定义目的缓冲区
bbENDS
;-----------------------------------------------
ccSEGMENT;代码段
ASSUMECS:
cc,DS:
aa,ES:
bb;指示指令中标号,变量所在段
start:
CLD;设置传送方向
MOVAX,aa;DS:
SI←源串首地址
MOVDS,AX
LEASI,xx
MOVAX,SEGyy;ES:
DI←目的首地址
MOVES,AX
MOVDI,OFFSETyy
MOVCX,6;CX←串的长度
REPMOVSB;串传送
MOVAH,4CH;调用4CH系统功能,返回DOS
INT21H
ccENDS
ENDstart;指示程序结束和程序入口
五、实验内容
1:
十进制数的显示,就是显示十进制数字number
2:
编程计算(w1-(w2*w3+w4-25000))/w5=w6
(w1到w5可以在数据定义时自行赋值,为使程序简单,最好使得最终w6的结果为整数。
)
3:
将BL寄存器的内容按二进制形式显示出来
提示:
把要显示的数字存入bl寄存器;最后的输出结果就是3的二进制。
(比如待显示数据为7,则其二进制显示结果为00000111)
六、实验过程及结果
1:
十进制数的显示,就是显示十进制数字number
(1)file->new->emptyworkplace,如下图
编辑程序如图
(2)file->save,保存程序(**.asm格式),完成程序的编辑.
(3)assmbler->compile,完成程序的编译和链接,如下图
4.emulator->showemulator,开始仿真调试,如下图
5.左键点击run运行程序,结果如图
2:
编程计算(w1-(w2*w3+w4-25000))/w5=w6
(1)file->new->emptyworkplace,如下图2-3
编辑程序如图
(2)file->save,保存程序(**.asm格式),完成程序的编辑.
(3)assmbler->compile,完成程序的编译和链接,如下图
4.emulator->showemulator,开始仿真调试,如下图
5.左键点击run运行程序,结果如图
3:
将BL寄存器的内容按二进制形式显示出来
提示:
把要显示的数字存入bl寄存器;最后的输出结果就是3的二进制。
(比如待显示数据为7,则其二进制显示结果为00000111)
(1)file->new->emptyworkplace,如下图
编辑程序如图
(2)file->save,保存程序(**.asm格式),完成程序的编辑.
(3)assmbler->compile,完成程序的编译和链接,如下图
4.emulator->showemulator,开始仿真调试,如下图
5.左键点击run运行程序,结果如图
七、实验感想
在这次实验中,收获很多,读懂了程序,同时对其中国内一些程序进行了修改,从而使它更简洁。
比如例三中,修改了一些语句,同时没有影响其运行结果。
在助教的讲解下,学会了如何使用防闪退,这是另一个收获。
八、参考文献
[1]李继灿,谭浩强.微机原理与接口技术.北京:
清华大学出版社
[2]王爽.汇编语言.北京:
清华大学出版社
[3]沈美明,温冬婵.汇编语言程序设计.北京:
机械工业出版社
[4]许立梓.微型计算机原理及应用.北京:
机械工业出版社
实验三:
基于Proteus软件的8086最小系统硬件设计
一、实验目的
1.学习使用Proteus进行8086微机系统仿真设计的方法。
2.学习8086CPU以及外部电路的接法和应用原理。
二、实验设备
PC微机一台、Proteus软件、emu8086编码器软件
三、实验任务
1.正确安装Proteus软件。
2.使用Proteus绘制38译码电路,并通过通断开关,观察二极管导通情况。
3.在Proteus中绘制8086最小系统电路,并加载程序,观察运行结果。
四、实验原理
本实验首先学习Proteus软件的安装,并通过绘制简单的38译码器电路掌握该软件的使用方法。
然后利用该软件设计完成一个8086最小模式系统原理图并加载指定程序实现LED显示开关状态。
设计8086最小模式系统包括8086CPU、地址锁存器、数据总线收发器、时钟发生器等。
利用74LS373芯片进行扩展外接开关和LED发光二极管。
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
它受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
本次试验将以该软件为基础分别绘制38译码器电路图和8086最小系统电路图。
74LS138译码器有三个输入端:
A0、A1、A2和八个输出端/Y0~/Y7。
当输入端A0、A1、A2的编码为000时,译码器输出为/Y0=0,而/Y1~/Y7=1。
即Q0对应于A0、A1、A2为000状态,低电平有效。
A0、A1、A2的另外7种组合见后面的真值表。
S1、S2、S3为使能控制端,起到控制译码器是否能进行译码的作用。
只有S1为高电平,S2、S3均为低电平时,才能进行译码,否则不论输入为何值,每个输出端均为1。
8086最小模式即系统中只有8086(或8088)一个微处理器。
最小模式是单处理器系统。
系统中所需要的控制信号全部由8086(或8088)CPU本身直接提供。
该最小系统电路图
微处理器级总线带负载的能力弱,加之部分引脚采用复用引脚,所以在微机系统设计时,不能直接与存储器、I/O接口连接。
地址锁存:
对存储器读写或对I/O设备输入输出的总线周期中,要求地址信息一直保持有效。
因此总线控制逻辑必须完成对分时复用的地址/数据总线中地址信息的锁存,以实现地址总线和数据总线的分离。
(74ls373)
数据缓冲(三态输出的总线收发器):
总线控制逻辑中的驱动器和
接收器是为了提高总线的驱动电流的能力和承受电容负载的能力。
(74ls245)他们都必须要求具有三态功能。
最小系统原理图:
图3-18086最小模式系统原理图
五、实验内容
实验中,我首先学习了Proteus软件的安装,并通过绘制简单的38译码器电路掌握该软件的使用方法。
然后利用该软件设计完成一个8086最小模式系统原理图并加载指定程序实现LED显示开关状态。
设计8086最小模式系统包括8086CPU、地址锁存器、数据总线收发器、时钟发生器等。
利用74LS373芯片进行扩展外接开关和LED发光二极管。
六、实验过程及结果
(1)以下是Proteus软件的安装步骤:
先运行“setup proteus 75.exe”,安装中途会弹出添加Key的对话框。
这个Key文件在文件夹中“Proteus+7[1].5+SP3+v2.1.3+破解文件”里面,选中“Grassington North Yorkshire.lxk”。
添加后单击install。
然后运行破解文件夹里面另一个程序“LXK Proteus 7.5 SP3 v2.1.3.exe”,找到Proteus安装路径,点Updata,出现successfull的字样便更新成功。
以下是截图
开始的界面如图
2.设计绘制8086最小模式系统图并加载指定程序实现LED显示开关状态。
所用元器件:
8086处理器
74LS373锁存器
74LS245数据缓冲
74LS138三八译码器
62648Kx8RAM
8255AIO扩展
ADC08098位AD转换器
BUTTON按键
DIPSW拨码开关
7SEG-BCD数码管
LED_RED发光二极管
SWITCH开关
PULLUP上拉电阻
ANDORNOTXORNANDNOR逻辑器件
实验截图:
实验结果截图:
实验所用代码
七、实验感想
通过设计8086最小模式系统电路图,学习8086CPU以及外部电路的接法和应用原理。
在助教老师的指导下,学习使用proteus仿真软件,收获颇多。
首先,在画图的过程中不免会有很多问题,比如如何添加引脚,如何标注等,在自己无法解决的时候,通过向同学求助和助教老师的帮助下,逐步解决问题,这也是这次实验的预期效果之一。
在将来的学习工作中,一定会经常使用此类仿真软件,所以这次的实验为今后的学习工作打下了基础。
八、参考文献
[1]李继灿,谭浩强.微机原理与接口技术.北京:
清华大学出版社
[2]王爽.汇编语言.北京:
清华大学出版社
[3]沈美明,温冬婵.汇编语言程序设计.北京:
机械工业出版社
[4]许立梓.微型计算机原理及应用.北京:
机械工业出版社
实验四:
基于8086最小系统的汇编程序设计
一、实验目的
1.学习使用Proteus进行8086微机系统仿真设计的方法。
2.学习8086CPU以及外部电路的接法和应用原理。
3.编程实现电路功能,学习汇编程序的编辑、编译、链接、执行的全过程。
二、实验设备
PC微机一台、Proteus软件、emu8086编码器软件
三、实验任务
1.研究所给实验材料中的8086最小系统电路原理图,了解其基本工作原理,包括工作时序、地址译码、相关逻辑器件的配合等。
2.根据电路的工作原理,编写程序,实现由矩阵按键控制BCD数码管显示0~F的基本功能。
四、实验原理
该8086最小系统的输入端物理地址为4004H,输出端地址为4000H。
该系统不断扫描输入端4*4矩阵开关的状态,当发现4*4矩阵开关有开关闭合,将该开关所代表的横纵坐标传给8086CUP进行计算,求出其代表的键值,并将该值传给输出端通过BCD数码管显示输出该值。
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
1、判断键盘中有无键按下:
将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置:
在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
电路如图4-1所示:
图4-18086系统电路图
五、实验内容
本实验首先需阅读Proteus设计文件中已经给出的译码表和译码电路,然后编写程序实现显示按键号的功能,即16个按键对应显示0~F。
电路中的数码管为BCD数码管,控制脚连接到IO口上,每个IO口分别代表二进制的一位,四位二进制可表示0~15的数,对应此数码管则显示0~F。
六、实验过程及结果
实验设计框图:
图4-2程序流程图
2、编写程序:
OUT1EQU4000H
OUT2EQU4002H
IN1EQU4004H
DATASSEGMENT
;此处输入数据段代码
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAL,00H
MOVBX,OUT1
MOV[BX],AL
MOVDL,00000001B;初始化DL
L:
MOVAL,DL
MOVBX,OUT2
MOV[BX],AL;按键扫描输出
MOVBX,IN1
MOVAL,[BX];数据读入
CMPAL,0;判断有无按键按下
JNEKEY;若不为0,表示有按键按下,跳到KEY执行
SHLDL,01H;左移-位
CMPDL,00010000B;判断是否扫描完全部4行按键
JNEL;若不等于,跳到L
MOVDL,00000001B;若等于,DL复位
JMPL;跳到L执行下一次扫描
KEY:
MOVBX,0000H
MOVCX,0000H;清零需要用到的计数器
LINECOUNT:
;计算列数
CMPDL,01H
JEROWCOUNT;若DL为1,列计数完毕,转到行计数
ADDCX,01H
SHRDL,01H;右移一位
JMPLINECOUNT
ROWCOUNT:
;计算行数
CMPAL,01H
JEVALUE;若AL为1,行计数完毕,转到显示输出
ADDBX,04H
SHRAL,01H;右移一位
JMPROWCOUNT
VALUE:
ADDCX,BX
MOVAL,CL
MOVBX,OUT1
MOV[BX],AL;输出到A口的LED显示
JMPL;跳转到L继续下一次扫描
CODESENDS
ENDSTART
实验电路图截图如下:
3、载入程序验证结果
图4-3实验结果展示
七、实验感想
此次实验是基于8086最小系统硬件设计实验的基础上进行的一步扩展。
实验主要研究实验材料中的8086最小系统电路原理图,了解其基本工作原理,包括工作时序、地址译码、相关逻辑器件的配合等。
这次实验也是收获颇多。
首先在之前实验的基础上,对proteus仿真软件的使用有了基础,可以更快的上手,画图比上次实验要快很多。
我们这次实验并没有要求自己写程序而是老师提供了已经有的程序,也使得实验轻松一些。
不过我们仍然要对自己严格要求,对老师提供的程序进行研究学习。
八、参考文献
[1]李继灿,谭浩强.微机原理与接口技术.北京:
清华大学出版社
[2]王爽.汇编语言.北京:
清华大学出版社
[3]沈美明,温冬婵.汇编语言程序设计.北京:
机械工业出版社
[4]许立梓.微型计算机原理及应用.北京:
机械工业出版社
实验五:
8255并行接口实验(演示实验)
一、实验目的
1.学习使用Wmd86编写汇编程序,并会加载到试验箱的8086运行。
2.学习常用电路模块之间的接线。
3.学习8086CPU以及8255可编程并行I/O接口芯片的编程和应用。
二、实验设备
PC机一台,TD-PITE实验装置一套。
三、实验任务
1.安装Wmd86并能够加载到试验箱上运行。
2.了解试验箱的基本功能和模块。
3.按照所给8255输入输出试验箱电路图正确接线。
四、实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。
图5-18255内部结构及外部引脚图
图5-28255控制字格式
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
五、实验内容
1.实验接线图如图5-3所示,按图连接实验线路图;
图5-38255基本输入输出实验接线图
2.编写实验程序,经编译、连接无误后装入系统;
3.运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
六、实验过程及结果
1.按照实验原理中8255结构图和控制字,编写汇编语言程序,使8255的A口为输入端口,B为输出端口。
2.按照实验原理部分的电路接线图3,完成5-电路的线路连接。
3.拨动开关,观察到数据灯的显示(输出端口)随着开关的拨动(输入端口)发生了相应的改变。
验证了程序和电路接线的正确性,初步学习了TD试验箱的使用,了解了其基本功能和模块。
实验代码及代码注释:
;=======================================================
;文件名:
A82551.ASM
;功能描述:
A口为输入,B口为输出,将读入的数据输出显示
;注:
IOY0为实验箱提供好的译码引脚,地址空间为0600H~063FH(由A10,A9译码而成,部分译码,地址有重叠),此实验中接8255的片选管脚(CS),即8255编程地址由它和A2,A1(接实验箱的A1,A0)决定,具体参考8255地址确定
;=======================================================
MY8255_AEQU0600H;600H为A口地址
MY8255_BEQU06