《微机原理》实验指导书.docx
- 文档编号:23603154
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:19
- 大小:690.48KB
《微机原理》实验指导书.docx
《《微机原理》实验指导书.docx》由会员分享,可在线阅读,更多相关《《微机原理》实验指导书.docx(19页珍藏版)》请在冰豆网上搜索。
《微机原理》实验指导书
目录
实验一、汇编软件的认识及寻址方式练习………………………1
实验二、堆栈及DOS系统功能调用……………………………5
实验三、8086的Proteus仿真…………………………………9
实验四、利用MASM32编译器生成EXE文件………………………14
实验一、汇编软件的认识及寻址方式练习
一、计算机硬件组成
图1计算机主板
主机主要包括主板、中央处理器、硬盘、鼠标、内存、显卡和光驱组成。
1、主板
主机中最大一块集成电路板,为其他扩展板预留了各种接口。
2、CPU
CPU是计算机的核心,相当于人的大脑,负责处理运算计算机内部的所有数据;主板则更像是心脏,它控制着数据的交换。
CPU主要由运算器、控制器、寄存器组和内部总线组成,再配上存储器、输入\输出接口和系统总线组成完整的PC。
8086CPU由总线接口部件BIU(BusInterfaceUnit)和指令执行部件EU(ExecutionUnit)两个独立的功能部件组成。
一般情况指令顺序执行,EU可源源不断地从指令队列中取得待执行的指令,达到满负荷连续地执行指令,而省去访问存储器取指令所需要的时间。
如果在指令执行过程中需要访问存储器取操作数,那么EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作。
总线接口部件(BIU)主要由地址加法器、专用寄存器组、指令队列缓冲区和总线控制逻辑等部件组成,其主要功能是形成访问存储器的物理地址与外设进行联系。
在正常情况下,BIU通过地址加法器形成指令在存储器中的物理后启动存储器,从给定地址中取出指令代码送指令队列缓冲器中等待执行。
只要收到EU送来的操作数地址,BIU将立即形成操作数的物理地址,完成读/写操作或运算结果等功能。
具体执行框图如图2所示。
图28086CPU内部结构图
3、硬盘
计算机存储数据的部件,相当于存放粮食的仓库。
4、内存
CPU和硬盘之间的桥梁,暂时存放CPU中的运算数据。
只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结构传送出来,内存的运行也决定了计算机的稳定运行。
二、emu8086汇编软件介绍
emu8086结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC)。
使用步骤如下:
1、双击图标进入emu8086汇编语言编辑窗口,选择新建空白工作区。
2、输入程序保存为“.asm”格式。
3、单击调试图标,进入调试窗口,单步执行并观察CPU寄存器值、指令的物理地址、逻辑地址、机器码等变化;打开堆栈窗口、附加段窗口、debug窗口、flags标志位窗口,单步执行观察其数据的变化,分析每一条指令执行后的结果是否与要求一致。
emu8086调试窗口如图3所示。
图3emu8086调试窗口
三、寻址方式练习
1、利用汇编软件emu8086编写下列程序,在调试窗口观察寄存器的变化。
要求:
在每条语句后面添加注释,并说明其寻址方式。
(1)ORG100h
(2)ORG100h
MOVAX,06HMOVAX,0B800H
PUSHAXMOVDX,AX
MOVAX,0FFHMOVCL,'A'
MOVBX,AXMOVCH,01011111B
POPAXMOVBX,15EH
RETMOVBX,[CX]
RET
(3)ORG100h
VAR1DB22h
MOVAL,VAR1;将变量var1的数值放入al
LEABX,VAR1;将var1的地址存入BX.可用MOVBX,OFFSETVAR1指令代替
MOVBYTEPTR[BX],44h;修改变量var1的内容
MOVAL,VAR1;将变量VAR1的数值放入AL
RET
END
(4)ORG100h
MOVAX,5;将AX设置为5.
MOVBX,2;将BX设置为2.
JMPcalc;跳转到'calc'.
back:
JMPstop;跳转到'stop'.
calc:
ADDAX,BX;将BX加到AX.
JMPback;返回'back'.
stop:
RET;返回操作系统
END
ret
2、利用汇编软件eum8086编写下列程序,在调试窗口观察标志寄存器的变化。
org100h
MOVAX,0F365H
MOVBX,0005H
MOVCX,0F024H
MOVDX,0002H
ADDAX,CX
ADCDX,BX
ret
实验二、堆栈及DOS系统功能调用
一、堆栈
1、堆栈是以后进先出的规则存取信息的一种存储机构,该存储区的存取地址由一个专门的地址寄存器来管理,这个地址寄存器称为堆栈指针。
当信息存入堆栈时,堆栈指针将自动减量,并将信息存入堆栈指针所指出的存储单元;当需要从堆栈中取出信息时,也将从堆栈指针所指出的存储单元读出信息,并将堆栈指针增量。
所以,堆栈指针始终指向堆栈中最后存入信息的那个单元,称该单元为栈顶。
在8086CPU中,寄存器SP即为堆栈指针,它是一个16位的地址寄存器,用来存放堆栈栈顶的偏移地址,堆栈的段地址则存于段寄存器SS中。
org100h
MOVAX,5000H
MOVBX,2500H
MOVCX,3125H
MOVSS,AX
MOVSP,BX
PUSHCX
POPAX
ret
指令执行前,SS=5000H,SP=2500H,CX=3125H。
由于堆栈指针始终指向栈顶,在执行指令前,栈顶的物理地址=SS×16+SP,即52500。
指令执行时SP-1→SP,SP=24FFH;然后寄存器高字节入栈,CH→(SP),(524FFH)=31H;再SP-1→SP,SP=24FEH;最后寄存器低字节入栈,CL→(SP),(524FEH)=25H。
具体堆栈过程如图4所示。
图4PUSHCX指令操作过程
2、利用汇编软件eum8086编写下列程序,在调试窗口观CS,SP的变化,并回答程序执行完后CS,SP,AX,BX和相应存储空间的值。
org100h
MOVAX,800H
MOVBX,2500H
PUSHAX
POPBX
MOVCX,3125H
MOVSS,AX
MOVSP,BX
PUSHCX
POPAX
Ret
二、DOS系统功能调用
DOS系统中设置了两层内部子程序可供用户使用,即基本输入输出模块BIOS和DOS层功能模块。
这些子程序对用户来说均可看做中断处理程序,它们的入口都安排在中断入口表中,使用汇编语言编程时可以直接调用它们,方便了用户对这些微机系统资源的利用。
BIOS固化在ROM中,它是操作系统的核心。
主要功能是驱动系统所配置的外部设备,如键盘、显示器、打印机及异步通信接口等。
用户可以不必过多关心有关设备的物理性能及接口方面的细节,可以直接通过使用中断指令INT10H~INT1AH而进入中断服务程序,称为BIOS功能调用。
系统启动时,DOS层功能模块从系统盘被装入内存。
其主要功能是输入/输出设备管理、文件管理及目标管理等。
这些子程序是通过BIOS使用设备,从而进一步隐蔽了设备的物理特性及其接口的细节,因而调用系统功能时总是先调用DOS层功能模块。
如果这层模块内容达不到要求,再进一步选用BIOS子程序。
1、DOS系统功能调用方法
为了使用方便,将DOS层功能模块所提供的100个子程序从00H~63H统一顺序编号,调用方法如下:
(1)设置入口参数;
(2)将子程序编号送入AH寄存器;
(3)执行中断指令INT21H。
2、常用的DOS系统功能调用
(1)键盘输入单字符(1号调用)
调用格式:
MOVAH,1
INT21H
系统执行该功能调用时将扫描键盘,等待有键按下。
一旦有键按下,就将其字符的ASCII码读入且放入寄存器AL,同时将该字符送显示器显示。
(2)显示单字符(2号调用)
调用格式:
MOVDL,待显示字符的ASCII码
MOVAH,2
INT21H
在汇编软件emu8086中编写如下程序:
MOVDL,’A’MOVDL,41H(或MOVDL,65)
MOVAH,2MOVAH,2
INT21HINT21H
通过模拟运行显示界面如图5所示:
图52号调用显示界面
思考:
累加器AX的值是多少?
(3)显示字符串(9号调用)
调用格式:
LEADX,字符串首址
MOVAH,2
INT21H
执行调用,将当前数据区中DS:
DX所指向的以$结束的字符串送显示器显示。
在汇编软件emu8086中编写如下程序,运行观察其显示结果。
org100h
DATASEGMENT
BUFDB'IWISHYOUSUCCESS!
$'
DATAENDS
LEADX,BUF
MOVAH,9
INT21H
MOVAH,4CH
INT21H
ret
作业:
分别利用2号调用和9号调用,在屏幕上显示“HelloWorld!
”
(4)键盘输入字符串(10号调用)
调用格式:
LEADX,输入缓冲区首地址
MOVAH,0AH
INT21H
0AH号系统功能调用时将键盘输入的字符写入内存缓冲区中。
其第一个字节给定该缓冲区中能存放的字节个数,第二个字节留给系统填写实际键入的字符个数,从第三个字节开始用来存放键入的字符串,最后键入回车(↘)键表示字符串结束。
如果实际键入的字符数不足填满缓冲区时,则其余字节填零;如果实际键入的字符数超过缓冲区的容量,则超出的字符将丢失。
在汇编软件emu8086中编写如下程序,运行观察其显示结果。
org100h
BUFDB10
DB?
DB10DUP(?
)
LEADX,BUF
MOVAH,0AH
INT21H
ret
运行后在模拟器屏幕中输入字母并按回车键,在调试界面中按“变量”键,观察BUF中的值。
具体显示界面如图6,7所示。
图6输入界面图7变量界面
实验三、8086的Proteus仿真
一、汇编语言程序的建立、汇编、连接与调试
当用户编制好汇编语言源程序后,需要在机器上运行,必须经过一下几个步骤,如图8所示。
图8汇编语言程序的建立、汇编、连接和调试
二、Proteus简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
ProteusISIS的工作界面是一种标准的Windows界面,如图9所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图9ProteusISIS的工作界面
1、元件的放置
将所需元器件加入到对象选择器窗口。
单击对象选择器按钮
,如图10所示
图10对象选择按钮
弹出“PickDevices”页面,在“Keywords”输入8086,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图11所示。
图11元件的查找
点击“OK”键,将8086放入对象选择器窗口。
选择该元件,将其放入图像编辑窗口。
2、元件与总线的连接
单击绘图工具栏中的导线标签按钮
,使之处于选中状态。
将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,如图12所示。
图12总线连接图
表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口。
在“string”栏中,输入标签名称,单击“OK”按钮,结束对该导线的标签标定。
同理,可以标注其它导线的标签。
注意,在标定导线标签的过程中,相互接通的导线必须标注相同的标签名。
练习:
在Protues下画图13电路图,并运行仿真。
图13二极管发光电路图
考虑:
为什么此电路不需要加限流电阻。
三、流水灯的实现
Proteus对8086CPU的虚拟仿真仅能提供最新模式下的仿真。
8086最小模式及流水灯硬件电路如图14、15所示。
图148086最小模式下的总线结构及I/O地址分配
分析:
IO0、IO1…IO15的端口地址。
图15流水灯接口电路
流水灯具体程序如下:
.MODELSMALL
.8086
.stack
.code
.startup
START:
MOVDX,0200H
MOVAX,1111111111111110B
NEXT:
OUTDX,AX
CALLDELAY
ROLAX,1
JMPNEXT
DELAYPROCNEAR
MOVBX,500
LP1:
MOVCX,469
LP2:
LOOPLP2
DECBX
JNZLP1
RET
DELAYENDP
.data
END
五、程序的装载
Proteus做8086仿真需要做一些设置才能仿真,和51不同。
做51单片机用的是keil生成的HEX文件,8086一般做汇编用的是汇编软件生成的文件.EXE和.bin或.com的文件。
8086没有内存贮器,仿真需要设置内存启始地址,内存的大小和外部程序加载到内存的地址段。
仿真一定要设置内存,时钟默认是1MHz,设置好后添加由MASM32或其他软件生成的扩展名为com,bin,exe的文件。
Proteus自动加载到设置好的内存段中。
配置方式为:
如可设置内存(internalmemorysize)大小10000H,程序下载到内存段(programloadingsegment)为0200H,BIN入口(BINentrypoint)为02000H,停止在int3(stoponint3)选择Yes。
适用各种扩展名(.BIN.COM.EXE)的代码文件。
其配置界面如图16所示。
图168086配置界面
实验四、利用MASM32编译器生成EXE文件
一、MASM32编译器介绍
MASM32编译器汇编、生成EXE文件,可以加载到ProteusVSM8086模型中。
MASM32汇编器使用简化定义格式,源程序格式如下:
;SAMPLE.ASM;文件名
.MODELSMALL;所有数据段都放在一个64KB的数据段内,所有代码都放在另一个64KB的代码段内,数据和代码都是近访问。
.8086;8086指令系统
.STACK;默认堆栈长度为1KB
.CODE;代码段
.STARTUP;程序入口点
MOVDX,0020H
MOVAL,35H
MOVDX,AL
END_LOOP:
JMPEND_LOOP
.DATA
END
编译和连接的批处理文档BUILD.BAT内容如下:
ml/c/Zd/Zisample.asm
link16/CODEVIEWsample.obj,sample.exe,,,nul.def
第1行命令的作用是编译sample.asm源程序;第2行命令的作用是连接sample.obj并生成sample.exe文件。
二、EXE文件的生成
1、执行【程序】→【Proteus7Professional】→【ProteusVSMModelHelp】→【8086Model】,打开Intel8086ProcessorModel帮助文档。
2、在帮助文档中单击打开SupportedAssemblersandCompilers,找到Creatinga.EXEfilewithmasm32。
3、打开MASM32Editor应用程序编辑器,复制SAMPLE.ASM下的文本至MASM32Editor编辑器窗口,并以“sample.asm”存盘至当前目录。
4、在MASM32Editor应用程序窗口中新建另一文档,复制BUILD.BAT下的文本至MASM32Editor编辑窗口,并以“BUILD.BAT”存盘至当前工作目录。
5、执行MASM32Editor应用程序File菜单下的CmdPrompt命令,转至DOS当前工作目录。
执行Build批处理文档,完成编译和连接。
如果汇编语言有错误则编译不成功。
6、查看当前目录,可以发现目录下多了几个文档,sample.asm是汇编语言源程序文档;build.bat是对源程序执行编译和连接的批处理文档;sample.obj是编译器生成的目标文件;sample.exe是连接器生成的可执行文件。
可执行文件的生成如图17、18所示。
图17EXE文件生成界面
图18生成的可执行文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 微机 原理 实验 指导书