目录
一、实验目的
- 让学生深入理解计算机硬件的基本组成结构、工作原理和设计方法,掌握16位微处理器(如8086)的内部结构和原理,并能够通过实际操作实现对其功能的在线调试和验证。这样可以加深对计算机系统的认识和理解,使学生具备进一步深入学习和研究计算机硬件体系结构的基础。
- 通过实践操作,加深对8086微处理器的理解和掌握,尤其是对其存储器、输入输出端口和中断控制等核心功能的实现过程有更深入的了解。同时还可以对电路原理图的理解和分析能力进行训练,提高实验技能和分析问题的能力。
二、实验原理
8086微处理器是Intel公司推出的一款16位微处理器。学习8086微处理器可以帮助我们更好地了解计算机的组成和运行原理。在进行8086微处理器学习时,首先需要做的是构建一个最小的8086系统,包括8086微处理器、时钟电路、存储器等。
最小的8086系统由8086微处理器、一个时钟电路和存储器组成,通常包括ROM和RAM存储芯片,以及与之对应的地址线、数据线、控制线。为了使其能够运行程序,我们还需要将程序写入存储器中。
在实验中,我们使用proteus仿真软件创建8086微处理器工程,然后设计其最小系统电路。电路中通过晶振产生时钟信号,同时将ROM和RAM存储芯片连接到8086微处理器。接下来,我们需要将程序编写并烧入ROM中。
在最小的8086系统中,当系统上电时,CPU将从ROM中读取程序并将其加载到RAM中,然后开始执行程序。当程序结束时,CPU会停止运行,等待下一个指令的到来。
三、实验内容
1.创建工程
(1)打开PROTEUS软件,并选择新建工程。跟随新建工程向导设置文件名称及存放位置。
在原理图创建中选择默认即可。
由于我们主要目的为8086微机仿真,不涉及PCB布线及制作等工作,此处不创建PCB布板设计。
(2)在创建固件选择中选择8086系列中的8086控制器。在编译器选择上,我们采用汇编语言进行编程,故采用MASM32(proteus内部并未集成相应的编译器)
(3)创建完成后会在原理图纸上得到8086微机
原理图设计:
Source——code
2.基本控制信号
(1)微机仿真工作在8086最小模式下,将8086CPU连接成如下状态
(2)电路图对应的引脚定义
3.最小系统搭建
由于proteus中已将RAM与ROM集成在8086内部,故搭建最小系统时只需处理地址锁存与数据缓冲部分即可。
(1)数据缓冲
采用74HC245芯片
与总线连接后
(2)地址锁存
采用74HC573芯片
该芯片可实现有效8位锁存,并有较强的驱动能力,可在驱动多芯片时不掉电压。
本系统共采用3块74HC573芯片锁存20位地址信号至新的地址总线中,其电路连接如下:
(与总线连接后,最小模式中16~19位地址并不复用,也可以不做锁存处理)
(3)译码电路
由于RAM与ROM均已内置,故只需对IO口所接外设芯片地址译码,此处采用138译码器,并保证IO/M口低电压时有效。(只对A5~8译码即可覆盖绝大多数常用IO外设的微机标准地址,故此处仅设计一个74HC138译码器,后续其余功能若出现不足可再酌情增加。
74HC138芯片如下所示:
在完整电路图中,该译码器与两个RTDPROBE_4相连,同时通过总线与其他器件相连。
(4)完整电路
4.系统实测
(1)emu8086下载及安装及配置环境过程
在注册机内获取license及密码后,登陆成功!
注册机生成license中
程序界面如下
(2)编写代码,生成可执行文件
代码如下:
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT PUBLIC 'CODE'
ASSUME CS:CODE
START:
MOV DX, 00C0H
MOV AL, 55H
OUT DX, AL
ENDLESS:
JMP ENDLESS
CODE ENDS
END START
(3)将上述程序在emu8086中编译并生成可执行文件后,双击仿真电路中8086芯片
可执行文件名:mycode2.0
在Program File选项中链接到生成的可执行文件上
然后编译运行仿真电路
四、实验结果与分析
1.emu8086运行代码生成可执行文件
(1)实验结果:
同时生成了可执行文件mycode2.0
(2)实验分析:在emu8086新建文件并将代码运行后,编译成功,运行成功,得到了所需的可执行文件。
2.链接
双击仿真电路中8086芯片,在Program File选项中链接到生成的可执行文件上,运行仿真
(1)实验结果:
(2)实验分析:观察电路得,该系统成功输出了55H(01010101B),验证了电路的设计成功,可执行文件的生效。
*五、思考题
1.8086基本数据转移指令
(1)一般数据传送指令
MOV指令
格式:MOV dest, src
操作:src—>dest
例子:MOV AL, BL
(2)堆栈操作指令
压入指令:PUSH OPRD
弹出指令:POP OPRD
(3)交换指令
XCHG REG, MEM/REG
交换两个操作室
(4)查表指令
XLAT
BX存表头地址,AL为待查表格位置
(5)扩展指令
格式CWD
操作:将AX内容扩展为AX, DX
若最高位为1,DX=FFFFH
若最高位为0,DX=0000H
(6)LEA指令
操作:将变量16位偏移地址写入目标寄存器
LEA REG,MEM
2.8086的基本加减指令
(1)加法指令
加法指令有三种,分别是普通加法、带进位加法、自增。
普通加法ADD
格式:ADD OPRD1, OPRD2
操作: OPRD1 + OPRD2 ——>OPRD1
ADD指令会影响6个状态标志位。
带进位加法ADC
格式:ADC OPRD1, OPRD2
操作: OPRD1 + OPRD2 + CF ——>OPRD1
ADD指令会影响6个状态标志位。
自增加法INC
格式:INC OPRD
操作:OPRD + 1 ——> OPRD
2.减法指令
减法指令共有5种,除去与加法相对应的三种外,还有比较指令与求补指令。
普通减法SUB
格式:SUB OPRD1, OPRD2
操作: OPRD1 - OPRD2 ——>OPRD1
ADD指令会影响6个状态标志位。
带进位减法SBB
格式:SBB OPRD1, OPRD2
操作: OPRD1 - OPRD2 ——>OPRD1
ADD指令会影响6个状态标志位。
自减减法DEC
格式:DEC OPRD
操作:OPRD - 1 ——> OPRD
求补指令NEG
格式:NEG OPRD
操作:0 - OPRD ——>OPRD
比较指令CMP
格式:CMP OPRD1, OPRD2
操作: OPRD1 - OPRD2
此操作不影响目标操作数,但会改变标志寄存器。
六、实验总结
1.在此次实验中,我根据实验要求,设计了8086最小系统电路图,同时为了验证系统运行是否正确,下载了emu8086软件,进行汇编语言的编写,根据所提供的代码,生成了可执行文件,并对8086进行了改动,然后完成了整个运行过程,得到了正确的运行结果。
2.通过此次实验,我进一步熟悉了proteus软件的进一步用法,学会了总线的画法及其与引脚的连接,同时对电路的连接和器件命名更加熟悉,更加耐心。为了得到可执行文件,我学习了emu80086软件的安装和用法,并学习了在emu8086上面如何运行汇编语言程序,收获颇丰。
3.在此过程中,我深刻理解了计算机组成原理的基本概念和知识,掌握了8086微机的基本结构、寄存器、指令系统等方面的知识,并学会了使用proteus仿真软件进行相关实验。
4.通过这次实验,我认识到计算机组成原理是计算机科学与技术领域中的基础学科,对于理解计算机体系结构、性能优化、操作系统、编译器等方面都有重要意义。同时,我也意识到了实验的重要性,只有通过实践才能更好地理解和掌握所学知识。因此,在今后的学习和工作中,我将继续注重实践能力的培养,不断提高自己的计算机组成原理水平,为以后的发展奠定坚实的基础。