emu8086仿真软件的应用_emu8086软件的使用
emu8086仿真软件的应用由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“emu8086软件的使用”。
EMU8086 仿真软件在《微机原理》课程教学中的应用
姓名: 专业: 学号:
摘要:微机原理与接口技术课程的主要内容是微机系统的工作原理。《微机原理与接口技术》作为计算机专业及其相关专业的一门基础课,其重要性是不言而喻的,若在该门课程的教学中能灵活运用Emu8086仿真软件进行演示及实验教学,则能让学生直观地理解的工作原理和工作过程,提高学生的学习兴趣,较好地解决了微机原理课程教学中存在的难题。在实际的教学中,实验设备昂贵,造成实验环节比重过少,不能充分发挥学习者的创造性和能动性。而实践证明,做中学是一种非常高效的现代教育理论,做中学理论即“从活动中学”和“从经验中学”。本文介绍一些基于仿真软件 Emu8086 的虚拟微机系统实验,使学习者容易达到做中学的目的。简单介绍Emu8086功能,Emu8086的使用使得汇编语言程序的编译、执行变得更加直观和清晰,有助于提高初学者的学习兴趣。针对微机原理学习中存在的问题,提出了用EMU8086仿真软件来解决的办法,并介绍了EMU8086的用法和一些指令常识,并通过两个实例说明了该软件在汇编程序设计和接口技术方面的应用。
关键词:微机原理;EMU8086;应用
正文:
一、软件介绍
Emu8086是Windows平台的一款80x86CPU模拟。Emu8086为8086 microproceor emulator(8086微处理器模拟器),它是Windows平台的一款80x86CPU模拟器,可以用于8086CPU的模拟运行。Emu8086便是输入80X86汇编语言的并模拟其真实CPU工作的软件,不过这里的模拟并不是100%的和真实一模一样,比如遇到中止的机器码,模拟器不会中止退出,只会提醒输入代码程序halt。同样,由于是模拟的,那么模拟器中的内存大小、CPU频率等实际问题也是理想化的(可以自己设定,毕竟环境是模拟的嘛),而不是实际的。总而言之,由于它是一个模拟器,所以它提供了一个模拟的环境,可以使用汇编语言,并提供了一系列的功能可以了解CPU的实际工作
《微机原理》课程是目前高校计算机专业及其相关专业学生必修的一门专业基础课,是学生学习后续课程、毕业设计和今后工作的重要技术基础。该课程的任务是以美国Intel公司生产的16位 CPU8086 为主线,介绍微型计算机的硬件结构、工作原理、汇编语言程序设计方法及微型计算机的接口技术[1]。由于该门课程对实践动手能力要求高,涉及的信息量大、知识点多、教学内容较抽象,学生普遍反映该门课很难学。
二、运用方法
1.在开始菜单选在它的图标,或者直接运行Emu8086.EXE。
2.在"FILE"菜单中选择"SAMPLE"。
3.点击"Compile and Emulate"按纽(或者按快捷键F5)。
4.点击"Single Step"按纽(或者按快捷键F8),可以查看代码如何运行。通用寄存器。
三、EMU8086与微机原理的衔接
在汇编中,EMU8086是必要使用的软件,对于微机原理中的所有指令都支持,在8086CPU有8个通用寄存器,每一个寄存器都有自己的名称:
1、AX 累加寄存器(分为 AH / AL)。2、BX 基址寄存器(分为 BH / BL)。
3、CX 计数寄存器(分为 CH / CL)。
4、DX 数据寄存器(分为 DH / DL)。
5、SI 源变址寄存器
6、DI 目的变址寄存器。
7、BP 基址指针寄存器。
8、SP 堆栈寄存器。
1、寄存器 编程中,各通用寄存器的具体用途是由自己决定的。寄存器的主要目的是保存数值(变量)。上面提到的寄存器是16位的,4个通用寄存器(AX, BX, CX, DX)在使用时分为两个8位寄存器。当修改其中任意8位值,整个16位寄存器的值同样改变。同样对于其他的3个寄存器,“H”表示高8位,“L”表示低8位。寄存器在CPU内部,访问中它们速度远远超过内存。因为,访问内存需要经过系统总线,所以时间要长一些。而访问寄存器中的数据几乎不需要时间。于是,编程中,应当尽量在寄存器中保存数据。虽然寄存器很小,并且这些寄存器都有具体用途,但他们依然是存放计算中临时数据的好地方。
段寄存器
2、CS 代码段寄存器,用来存放当前正在运行的指令 DS 数据段寄存器,用来存放当前运行程序所用的数据 ES 附加段寄存器,由自己决定用途 SS 堆栈段寄存器,指出堆栈所在区域。而由两个寄存器生成的地址被称为有效地址。
但是默认下,BX, SI 及 DI 与 DS协同工作,BP SP 与 SS 寄存器协同工作。其余的通用寄存器不能形成有效地址。同样,尽管BX可以形成有效地址,但是BH BL不能!IP 始终同CS 协同工作,指出当前执行的指令。Flags Register 完成一次数学运算后,由CPU自动修改,通过它可以得到当前结果类型,也可以作为跳转语句条件。
3、寻址方式,可以通过下面的四个寄存器来寻址 BX, SI, DI, BP。通过计算[]符号中的值,我们可以访问到不同内存单元的值。偏移量可以是一个立即数或者是一个变量的偏移,或者二者兼备。偏移量可以在[]符号里面或者外面。偏移量是一个有符号数,可以是正数或者负数。默认下,DS 寄存器应用在除了BP寄存器之外的所有物理地址计算中,寄存器是和SS寄存器一起工作的。
4、调用中断,中断是一系列功能调用。比如,在打印机上输出一个字符,只需要简单的操作它将完成所有的事情。另外还有控制磁盘和其他硬件工作的中断。这些功能调用称作软件中断。不同的硬件同样可以触发中断,这些中断称作硬件中断。在调用一个中断的子功能之前,需要设置AH寄存器。每一个中断最多可
以拥有256个子功能。一般情况下使用AH寄存器,但是一些情况下可能使用另外的寄存器。通常,其他的寄存器是用来传递数据和参数的。
5、控制程序,控制程序走向是非常重要的事情,它是你的程序根据条件作出判断,跳转到相应的位值。无条件跳转控制程序转向的最基本的指令是JMP。
四、实例应用
实例 1:EMU8086 用于汇编程序设计的典型实例:用汇编程序实现将表达式5+10-1 的结果 14 用二进制形式(00001110)在屏幕上显示出来。
分析:本程序通过 8086CPU 内的寄存器及加法指令ADD减法指令 SUB 可方便地实现表达式的计算,再通过调用 21H 中断将结果对应的二进制数的每一位显示出来。利用EMU8086仿真软件可通过模拟的方式快速地进行编译、调试及运行,实现表达式结果的显示。操作过程如下:
(1)打开 EMU8086,在用户工作区输入源程序。
code segment
aume cs:code
start: mov al,5
mov bl,10
add bl,al
sub bl,1
mov cx,8
print: mov ah,2
mov dl,'0'
test bl,10000000b
jz zero
mov dl,'1'
zero: int 21h
shl bl,1
loop print
mov dl,'b'
int 21h
mov ah,0
int 16h
code ends
end start
(2)将输入的源程序存盘,然后点击Emulate按钮,EMU8086自动完成对源程序的编译、连接,若有错则给出错误信息。正确连接后,自动进入到指令的调试界面。
(3)在该窗口单击 single step 按钮可方便地观察到指令单步执行后 CPU 内部所有通用寄存、段寄存器、标志寄存器和算术逻辑单元ALU 中的值和数据的传递,还可看到汇编后生成的机器码及每条指令在内存中所占存储单元的物理地址,非常形象直观地展示了 CPU 工作的状态变化和工作原理。用户也可以单击 run 按钮运行该汇编程序。
实例2:CPU与外设间的信息交换是通过接口来实现的,EMU8086内置用java,visual basic等编程语言编写的虚拟外设,CPU对它们的访问可通过图1交通灯示意图
端口地址来进行。如EMU8086内置的外设交通灯,其端口地址为4,对应图1中十字路口东西南北四个方向的红绿黄共12 盏灯,通过对交通灯端口送l6位控制字控制相应灯的开或关,控制字的低12位对应图1中12盏灯,高4位无实际意义全置为0,对低12位的相应位置1可设置对应的灯为开,置0为关。现要求编程实现先让4个方向的红灯全亮,然后让南北方向绿灯全亮,让南北方向车辆可通行,同时东西方向的红灯全亮,禁止东西方向车辆通行,E述状态延时5秒后,交换为南北红灯全亮而东西方向绿灯全亮,再南北绿灯亮东西红灯亮,这样循环往复,实现对十字路口的交通控制。
该程序源代码如下:
#start=Trafic—
Lights.exe#
mov,all—
red
out 4,ax
mov si,offset situation
next:
mov ax,[si]
out 4,ax
mov CX,4Ch ; ~ C4B40h =
5,000,000
mov dx,4B40h
UlOV ah,86h
int 15h
add si,2 ;next situation
cmp si,sit_
end
jb next
mov si,offset situation
jmp next
; FEDC— BA98_
7654_ 3210
situation dw 0000_
001 1
_
0000_ 1 100b
sl dw 0000
_ 01 10—
1001— —
1010b
s2 dw 0000_ 1000_
01 10_
0001b
s3 dw 0000_
1000_ 01 10_
0001b
s4 dw 0000_
0100—101_
001 lb
sit— end=$
all—
red equ 0000_ 0010_ 0100_
1001b
在EMU8086用户工作区录入源码并运行后
总结:
基于 EMU8086 可完成多项微机原理及接口实验,主要有汇编语言、并行 I/O 接口、硬件中断、软盘读写、系统启动代码、操作系统等实验。虚拟的外设主要有五位七段数码管、并行接口打印机、移动障碍物机器人、并口数据收发器、步进电机、温度控制模型。其中汇编语言、并行 I/O 接口、硬件中断是信息类本科生基本的学习内容,数码管、电机等外设是实验中典型的外设。通过这些基本接口和外设,可辅助学生学习微机原理及接口技术。较复杂的接口和外设可组合出不同的拓展实验,提高学生的综合应用能力。这些接口和外设所对应的实验在 4.08 版本中验证通过。
EMU8086 的工作界面为很简洁,它能模拟真实微处理器工作的每一步骤,通过单步调试显示指令执行后 CPU 内部寄存器、存储器、堆栈、变量和标志寄存器的当前值,操作简单直观,通过它我们可以很快掌握汇编程序设计和接口技术等知识。在实验过程中也是我们学习到了很多知识,很多课堂上不是很了解的知识也得到了清晰地理解。与实验室里的星研比较,EMU8086有着很大的优势,在编译、运行的步骤上尤为简单。因此实验过程中,我们一直用的是EMU8086来编写实验代码,然后进行相应的分析,很少用到星研。
致谢:
在微机原理课程的学习过程中,丁老师给我们细心讲解了一个个重要的知识点,并为我们一一解答了我们学习过程中遇到的问题及疑惑。因此在本学期结束之际,再三感谢丁老师给予我及同学们在学习上的帮助和支持!
参考文献:
[1] DAVID C.Virtualization for Windows:A Technology Over-view
[EB/OL].(2009-08-03).http:///writing/white_ papers.php.[2] 孙 卫.虚拟技术综述[J].数字图书馆论坛,2009(7):34-38.[3] 谷兆麟.基于 EMU8086 的微机系统的辅助学习方法[J].天津工程师范
学院学报,2006,16(4):26-27.[4] 戴梅鄂.微型计算机原理及接口技术[M].4 版.北京:清华大学出版社,2003:1-20.[5]周荷琴,吴秀清 微型计算机原理与接口技术.合肥:中国科技大学出版社,2008