微机论文文档格式.docx
《微机论文文档格式.docx》由会员分享,可在线阅读,更多相关《微机论文文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
参考文献12
摘要
微机原理与接口技术是信息类专业学生的的专业基础课程。
通过本课程的学习,使学习者掌握8086至Pentium微处理器的寻址方式、指令系统及其汇编语言程序设计基本思想和方法,同时通过汇编语言程序设计进一步掌握利用程序设计充分发挥计算机效率的基本思想。
汇编语言的显著特点是可以直接控制硬件并充分发挥计算机硬件的功能,对于编写高性能的系统软件和应用软件具有不可忽视的作用,微机接口技术则侧重计算机硬件的结构和I/O系统的组成。
通过实验实践熟悉硬件连接和程序调试技术。
使学生掌握微型计算机原理与接口技术的基本知识,培养学生具有基本的微机硬件系统分析,微型计算机系统与接口设计、编程以及开发应用的能力。
而在汇编过程中,EMU8086是一个很好的工具。
它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。
该软件包含了学习汇编语言的全部内容。
EMU8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。
第一章EMU8086的介绍与运行
1.1EMU8086介绍
EMU8086是DigitalRiver公司推出的16位CPU8086的仿真软件,它将汇编语言程序设计和虚拟接口技术有机地结合起来,其内部集成了汇编程序编译器、连接器、参考例程、学习指南,并提供了交通灯、机器人、步进电机争E个虚拟外设,是学习Intel8086微处理器的理想工具。
E—MU8086的工作界面为纯WINDOWS,界面友好,由菜单栏、快捷按钮栏和用户工作区构成,它能模拟真实微处理器工作的每一步骤,通过单步调试显示指令执行后CPU内部寄存器、存储器、堆栈、变量和标志寄存器的当前值,操作简单直观,通过学习它可以很快掌握汇编程序设计和接口技术等知识。
这个模拟器是在一台"虚拟"的电脑上运行程序的,它拥有自己独立的“硬件”,这样你程序就同诸如硬盘与内存这样的实际硬件完全隔离开,动态调试(DEBUG)时非常方便.8086的机器代码同INTEL下一代微处理器完全兼容,包括PentiumII和Pentium4,这意味着8086代码具有很广泛的应用范围,它在老式的和最新的计算机系统上都能工作8086指令的另外一个优点是它的指令集非常小,这样学起来会容易得多。
Emu8086同主流汇编程序相比,语法简单得多,但是它能生成在任何能兼容8086机器语言的代码。
1.2如何运行EMU8086
(1)在开始菜单选在它的图标或者直接运行Emu8086·
exe。
(2)在FILE菜单中选择SAMPLE。
(3)点击CompileandEmulate按钮或者按快捷键F5。
(4)点击SingleStep按钮或者按快捷键F8可以查看代码如何运行。
第二章EMU8086的应用介绍
2.1寄存器介绍
8086CPU有8个通用寄存器,每一个寄存器都有自己的名称:
AX累加寄存器accumulatorregister(分为AH/AL).BX基址寄存器baseaddressregister(分为BH/BL).CX计数寄存器countregister(分为CH/CL).DX数据寄存器dataregister(分为DH/DL).SI源变址寄存器sourceindexregister.DI目的变址寄存器destinationindexregister.BP基址指针寄存器basepointer.SP堆栈寄存器stackpointer。
CS代码段寄存器,用来存放当前正在运行的指令DS数据段寄存器,用来存放当前运行程序所用的数据ES附加段寄存器,由程序员决定用途SS堆栈段寄存器,指出堆栈所在区域,还有指令指针寄存器。
在emu8086中,程序运行后会出现如下图所示的对话框,各类寄存器会出现在对话框左边。
当执行singlestep时。
可以看到它们内容的变化情况。
图1
2.2指令介绍
将第二个操作数(源)拷贝到第一个操作数(目的)指定位值,源操作数可以是立即数,通用寄存器或者内存单元,目的寄存器可以是通用寄存器或者内存单元,源和目的必须是同样大小,要么都是字节要么都是字
操作类型如下:
MOVREG,memory
MOVmemory,REG
MOVREG,REG
MOVmemory,immediate
MOVREG,immediate
REG:
AX,BX,CX,DX,AH,AL,BL,BH,CH,CL,DH,DL,DI,SI,BP,SP.
memory:
[BX],[BX+SI+7],变量,等等
immediate:
5,-24,3Fh,10001101b,等等.
mov 指令只支持如下段寄存器:
MOVSREG,memory
MOVmemory,SREG
MOVREG,SREG
MOVSREG,REG
SREG:
DS,ES,SS,注意CS只能作操作源
[BX],[BX+SI+7],variable,等等
MOV指令不能用来设置CS和IP寄存器的值。
下面是一个使用MOV指令的例子:
#MAKE_COM# ;
表示,这个是一个com程序
ORG100h ;
COM程序必须的
MOVAX,0B800h ;
将ax设置为B800h.
MOVDS,AX ;
将AX值拷贝到DS.
MOVCL,'
A'
;
将ASCII码'
的值传送到CL,这个值是41h.
MOVCH,01011111b ;
将CH设置为二进制的01011111b
MOVBX,15Eh ;
将BX设置成15Eh.
MOV[BX],CX ;
将CX放到BX指出的内存单元B800:
015E
RET ;
返回操作系统
将上面的程序贴入Emu8086代码编辑器,接下来按下[complieandemulate] (或者按F5)模拟窗口将显示这个程序已经调入,点击[singlestep]观察寄存器数值变化,你可以猜到 "
;
"
表示注释,编译器忽略在"
后面的一切,程序结束后,你可以看到如下窗口,事实上,上面程序是将字符直接写入显示内存。
图2运行界面
图3显示屏
2.3中断介绍
中断是一系列功能调用。
这些功能调用使得编程更加容易。
比如,你想在打印机上输出一个字符,你只需要简单的调用中断,它将帮你完成所有的事情。
另外还有控制磁盘和其他硬件工作的中断。
我们将这些功能调用称作软件中断。
不同的硬件同样可以触发中断,这些中断称作硬件中断。
这里,我们只介绍软件中断(softwareinterrupts)。
触发一个软件中断,需要使用INT指令,它的使用方式非常简单:
INTvalue
上面value的取值范围是从0到255(或者0到0ffh),通常我们使用十六进制。
你也许猜测只有256个中断调用,但是这是不正确的。
因为每一个中断都有子功能。
在调用一个中断的子功能之前,需要设置AH寄存器。
每一个中断最多可以拥有256个子功能(于是,我们有256*256=65536个功能调用)。
一般情况下使用AH寄存器,但是一些情况下可能使用另外的寄存器。
通常,其他的寄存器是用来传递数据和参数的。
下面的例子调用了INT10h中断0Eh子功能输出字符串‘Hello!
'
。
这个功能作用是在屏幕上显示一个字符,然后光标进一位,如果需要还滚屏。
#MAKE_COM#;
生成com文件的指令
ORG100h
;
我们使用的这个子功能没有返回值,
所以我们只用设置就可以了。
MOVAH,0Eh;
选择子功能
int10h/0eh子功能,输出放在
AL寄存器中的ASCII码对应的字符
MOVAL,'
H'
;
ASCII码:
72
INT10h;
输出
e'
ASCII码:
101
l'
108
o'
111
!
33
RET;
将上述程序拷贝粘贴到Emu8086代码编辑器,点击[CompileandEmulate]按钮,运行!
图4运行界面图
图5显示屏图
第三章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协同工作,BPSP与SS寄存器协同工作。
其余的通用寄存器不能形成有效地址。
同样,尽管BX可以形成有效地址,但是BHBL不能!
IP始终同CS协同工作,指出当前执行的指令。
FlagsRegister完成一次数学运算后,由CPU自动修改,通过它可以得到当前结果类型,也可以作为跳转语句条件。
3、寻址方式,可以通过下面的四个寄存器来寻址BX,SI,DI,BP。
通过计算[]符号中的值,我们可以访问到不同内存单元的值。
偏移量可以是一个立即数或者是一个变量的偏移,或者二者兼备。
偏移量可以在[]符号里面或者外面。
偏移量是一个有符号数,可以是正数或者负数。
默认下,DS寄存器应用在除了BP寄存器之外的所有物理地址计算中,寄存器是和SS寄存器一起工作的。
4、调用中断,中断是一系列功能调用。
比如,在打印机上输出一个字符,只需要简单的操作它将完成所有的事情。
这些功能调用称作软件中断。
在调用一个中断的子功能之前,需要设置AH寄存器。
每一个中断最多可以拥有256个子功能。
5、控制程序,控制程序走向是非常重要的事情,它是你的程序根据条件作出判断,跳转到相应的位值。
无条件跳转控制程序转向的最基本的指令是JMP。
总结
终于,我们完成了微机的全部课程,在这里,我首先要感谢丁老师对我们孜孜不倦的教诲和细心的教导,才使得我们可以很好完成本门课程,并且完成此次论文。
Emu8086对于我们学习微机原理课程起着非常重要不可取代的作用,写下本门课程就是为了更加了解emu8086与微机原理的联系,让我们以后学习微机课程时可以很好的利用emu8086来帮助我们学习,更上一层楼!
参考文献
1.周荷琴,吴秀清版《微型计算机原理与接口技术》第四版,中国科学技术大学出版社;
2.赵邦信,林嵘版《微型计算机原理与接口技术》,化学工业出版社。