微机原理与接口技实验报告.docx
- 文档编号:5495964
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:45
- 大小:1.18MB
微机原理与接口技实验报告.docx
《微机原理与接口技实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技实验报告.docx(45页珍藏版)》请在冰豆网上搜索。
微机原理与接口技实验报告
微机原理与接口技术实验报告
学院:
核技术与自动化工程学院
专业:
电气工程及其自动化
班级:
XXXXXX
学号:
XXXXX
姓名:
XXX
指导老师:
XXX
完成时间:
2012、11、14
实验一EMU8086软件的使用
1、实验目的
1、了解EMU8086软件的基本使用步骤和各个工作区的功能,在能力方面主要是学以致用,将理论知识运用于实际的设计,从设计的完整和缺陷中找到新的突破口,以便温故而知新,从而提升自己的实际操作技能,能够通过自我想象与思考做出很多有价值的设计。
2、在系统的学习了微机原理与接口技术后,主要针对8086,利用emu8086软件设计一些程序,熟悉了解此款软件的运行过程中各个步骤寄存器内容及地址的变化。
3、在理论方面,基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。
2、实验仪器及设备
PC设备、EMU8086软件平台、EMU8086软件仿真平台
3、实验内容
双击EMU8086图标,打开程序。
此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可选择EXE模板),见图1.2所示,一般点击Cancel按钮,直接进入编辑状态。
在编辑窗口,可直接将源程序输入,见图1.3所示。
图1.1welcome窗口
图1.2模板选择
图1.3编辑窗口输入源程序
点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘。
点击emulate(仿真)按钮则可进入8086仿真器界面,见图1.4所示。
界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。
用户可点击run连续运行程序,也可点击singlestep对程序进行单步调试。
图1.5为HELLO.EXE的运行结果,用户通过虚拟屏幕观察,非常形象生动。
。
O
图1.48086仿真器界面
图1.5HELLO.EXE的运行结果
EMU8086提供了断点设置功能,见图1.6所示,先用鼠标选中要设置为断点的指令,然后点击菜单debug——setbreakpoint,即可设置断点。
若要清除断点,则点击菜单debug——clearbreakpoint。
图1.6断点设置
EMU8086也支持DEBUG调试程序,仿真器界面下方的一行按钮中有debug按钮,点击打开后可输入DEBUG命令进行调试。
见图1.7所示。
图1.7EMU8086提供的DEBUG
4、实验总结
通过学习emu8086软件的使用,从编译程序到程序的仿真,EMU8086是学习Intel8086微处理器的理想工具,它模拟真实微处理器的每一步骤,并显示内部寄存器、存储器、堆栈、变量和标志寄存器,而且其中任何一个数值都可通过鼠标双击来改变。
实验二8086指令观察
一、实验目的和要求
1.掌握汇编语言程序编辑、汇编、链接和调试的基本概念。
2.掌握在PC机上建立、汇编、链接和运行8088汇编语言程序的过程。
3.通过观察深入掌握数据传送类、算术运算类和逻辑运算类等各类指令的功能。
二、实验任务
编辑汇编程序,并汇编、链接和调试程序,验证结果。
三、实验设备和软件
PC机、EMU8086
四、实验内容
1.寻找最大最小数程序实验
设内存缓冲区从BUF单元开始,存放若干个单字节数,其数据长度在BUF单元,要求找出最大数送MAX单元,最小数送MIN单元。
2.实验源程序如下
2.代码转换实验
从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。
实验程序如下:
实验结果
输入78
实验三顺序结构程序设计
一、实验目的和要求
1.熟悉星研集成环境软件的使用方法。
熟悉Borland公司的TASM编译器;
2.熟悉8086汇编指令,能自己编写简单的程序,并调试运行验证结果。
二、实验任务
学习使用EMU8086集成环境软件,验证及编写调试实验内容的程序。
三、实验设备和软件
PC机、EMU8086
四、实验内容
1.编写简单程序,用数据运算指令,对两个16位数做加法运算。
这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。
实验框图:
实验程序如下:
codesegment
start:
;setsegmentregisters:
MOVAX,0000H
MOVDS,AX
;addyourcodehere
MOVSI,50H
MOVDI,52H
MOVBX,54H
CLC
XORAX,AX
MOVAX,[SI]
ADCAX,[DI]
MOV[BX],AX
HLT
ends
endstart;setentrypointandstoptheassembler.
实验结果
2.编写简单程序,实现组合BCD码转换成ASCII码送CRT显示。
实验程序如下:
datasegment
;addyourdatahere!
pkeydb"pressanykey...$"
ends
stacksegment
dw128dup(0)
ends
codesegment
start:
;setsegmentregisters:
movax,data
movds,ax
moves,ax
;addyourcodehere
MOVAL,27H
MOVDL,AL
MOVCL,4
SHRDL,CL
ORDL,30H
pushax
MOVAH,2
INT21H
popax
MOVDL,AL
ANDDL,0FH
ORDL,30H
MOVAH,2
INT21H
movdl,0dh;回车换行
MOVAH,02H
INT21H
movdl,0ah
MOVAH,02H
INT21H
leadx,pkey
movah,9
int21h;outputstringatds:
dx
;waitforanykey....
movah,1
int21h
movax,4c00h;exittooperatingsystem.
int21h
ends
endstart;setentrypointandstoptheassembler.
实验结果
3、试用已学过的指令编程,运算以下算式:
;⑴、5555H+6666H+8756H
;⑵、5678+(-1234)-4321
datasegment
;addyourdatahere!
pkeydb"pressanykey...$"
a1dw5555h,6666h,8756h,0,0
b1dw5678,-1234,4321,0
ends
stacksegment
dw128dup(0)
ends
codesegment
start:
;setsegmentregisters:
movax,data
movds,ax
moves,ax
;addyourcodehere
clc;5555H+6666H+8756H
movax,a1
adcax,a1+2
adcax,a1+4
mova1+6,ax
jcSAVECF
jmpNEXT
SAVECF:
mova1+8,1
NEXT:
clc;5678+(-1234)-4321
movbx,b1
adcbx,b1+2
subbx,b1+4
movb1+6,bx
leadx,pkey
movah,9
int21h;outputstringatds:
dx
;waitforanykey....
movah,1
int21h
movax,4c00h;exittooperatingsystem.
int21h
ends
endstart;setentrypointandstoptheassembler.
实验结果
4、已知BX=12ABH,试编程将其内容转换成ASCII码送到
;数据段0100H单元开始存放
datasegment
;addyourdatahere!
pkeydb"pressAnykey...$"
ends
stacksegment
dw128dup(0)
ends
codesegment
start:
;setsegmentregisters:
movax,data
movds,ax
moves,ax
;addyourcodehere
movsi,0100h
movbx,12ABh
movcl,12
movax,bx
shrax,cl
oral,30h
mov[si],al
incsi
movcl,8
movax,bx
shrax,cl
andal,0fh
oral,30h
mov[si],al
incsi
movcl,4
movax,bx
shrax,cl
andal,0fh
clc
subal,10
addal,41h
mov[si],al
incsi
movax,bx
andal,0fh
clc
subal,10
addal,41h
mov[si],al
incsi
mov[si],'$'
movdx,0100h
movah,9
int21h;outputstringatds:
dx
;waitforanykey....
movah,1
int21h
movax,4c00h;exittooperatingsystem.
int21h
ends
endstart;setentrypointandstoptheassembler.
实验结果
实验四分支结构程序设计
一、实验目的和要求
1.学习分支结构程序的设计和调试方法;
2.熟悉8086汇编指令中的程序控制指令的应用。
二、实验任务
学习使用EMU8086集成环境软件,验证及编写、调试实验内容。
三、实验设备和软件
PC机、EMU8086
四、实验内容
1.已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。
题目分析:
根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。
8086/8088指令系统中有专门的求相反数的指令NEG。
实验框图:
实验程序如下:
datasegment
;addyourdatahere!
pkeydb"pressanykey...$"
XDB-25
RESULTDB?
ends
stacksegment
dw128dup(0)
ends
codesegment
start:
;setsegmentregisters:
movax,data
movds,ax
moves,ax
;addyourcodehere
MOVAL,X;X取到AL中
TESTAL,80H;测试AL正负
JZNEXT;为正,转NEXT
NEGAL;否则AL求补
NEXT:
MOVRESULT,AL;送结果
leadx,pkey
movah,9
int21h;outputstringatds:
dx
;waitforanykey....
movah,1
int21h
movax,4c00h;exittooperatingsystem.
int21h
ends
endstart;setentrypointandstoptheassembler.
实验结果
2.编写计算下面函数值的程序:
1X>0
Y=0X=0
-1X<0
设输入数据为X、输出数据Y,且皆为字节变量。
实验程序如下:
datasegment
;addyourdatahere!
Msg0db0Dh,0Ah,0Dh,0Ah,"pleaseinputdataXbetween-128and127...",0Dh,0Ah,0Dh,0Ah,"X=12",'$'
Msg1db0Dh,0Ah,0Dh,0Ah,"X>Y,Y=1$"
Msg2db0Dh,0Ah,0Dh,0Ah,"X=Y,Y=0$"
Msg3db0Dh,0Ah,0Dh,0Ah,"X Msg4db0Dh,0Ah,0Dh,0Ah,"pressYtocontinue,otherwisestop...",0Dh,0Ah,0Dh,0Ah,'$' Msg5db0Dh,0Ah,0Dh,0Ah,"pressanykeytoreturn...$" Msg6db0Dh,0Ah,0Dh,0Ah,"inputdataerror...$" StXdb"000$" Xdw0 Ydb0 SFdb0 ends stacksegment dw128dup(0) ends codesegment start: ;setsegmentregisters: movax,data movds,ax moves,ax loop0: ;addyourcodehere leadx,Msg0 movah,9 int21h movah,1;符号位判断 int21h cmpal,'-' jzSIGN movStX,al;正数处理,firstnumber movah,1;secondnumber int21h movStX+1,al movah,1;thirdnumber int21h movStX+2,al jmpNEXT0 SIGN: movSF,1;是负数,标志位sf=1;负数处理 movah,1;firstnumber int21h movStX,al movah,1;secondnumber int21h movStX+1,al movah,1;thirdnumber int21h movStX+2,al NEXT0: clc;getinputdata'sdecimal,saveinX xorax,ax moval,StX;inputdata,baiwei subal,30h movbl,100 mulbl movX,ax xorax,ax moval,StX+1;inputdata,shiwei subal,30h movbl,10 mulbl adcX,ax xorax,ax moval,StX+2;inputdata,gewei subal,30h adcX,ax cmpX,-128 jlDATAERROR cmpX,127 jgDATAERROR jmpNEXT1 DATAERROR: leadx,Msg6 movah,9 int21h jmploop0 NEXT1: cmpSF,1;是负数,求补码 jzNEGX jmpNEXT2 NEGX: negX NEXT2: cmpX,0;判断X的值,决定Y的值 jzZERO jgGREAT movY,0ffh;x<0,Y=-1 leadx,Msg3 movah,9 int21h jmpEND0 GREAT: movY,1;x>0,Y=1 leadx,Msg1 movah,9 int21h jmpEND0 ZERO: movY,0;x=0,Y=0 leadx,Msg2 movah,9 int21h END0: leadx,Msg4 movah,9 int21h movah,1;waitforanykey int21h cmpal,'Y' jzloop0 leadx,Msg5 movah,9 int21h movah,1;waitforanykey int21h movax,4c00h;exittooperatingsystem. int21h ends endstart;setentrypointandstoptheassembler. 实验结果 输入12 3.试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。 设三个带符号数分别在三个字变量X、Y、Z中存储。 实验程序如下: ;multi-segmentexecutablefiletemplate. datasegment ;addyourdatahere! pkeydb"pressanykey...$" Xdw-7856 Ydw-1234 Zdw0 MAXdw? ends stacksegment dw128dup(0) ends codesegment start: ;setsegmentregisters: movax,data movds,ax moves,ax ;addyourcodehere movax,X movMAX,ax cmpax,Y jlSAVEMAX1 jmpNEXT1 SAVEMAX1: movax,Y movMAX,ax NEXT1: cmpax,Z jlSAVEMAX2 jmpNEXT2 SAVEMAX2: movax,Z movMAX,ax NEXT2: leadx,pkey movah,9 int21h;outputstringatds: dx ;waitforanykey.... movah,1 int21h movax,4c00h;exittooperatingsystem. int21h ends endstart;setentrypointandstoptheassembler. 实验结果 实验五循环结构程序设计 一、实验目的和要求 1.学习、掌握循环结构程序的设计和调试方法; 2.熟悉8086汇编指令中的程序控制指令和LOOP指令的应用。 二、实验任务 学习使用EMU8086集成环境软件,验证及编写、调试实验内容。 三、实验设备和软件 PC机、EMU8086 四、实验内容 1.编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。 统计被累加的自然数的个数送CN单元,累加和送SUM。 流程图如下图所示。 实验框图: 实验程序如下: datasegment ;addyourdatahere! pkeydb"pressanykey...$" SUMdw? CNdw? ends stacksegment dw128dup(0) ends codesegment start: ;setsegmentregisters: movax,data movds,ax moves,ax ;addyourcodehere ;movCX,100 MOVAX,0;0送AX MOVBX,0 LP: INCBX;BX加1 ADDAX,BX;求累加和 CMPBX,100;比较 JBLP;<100转 ;loopLP MOVSUM,AX MOVCN,BX;送结果 leadx,pkey movah,9 int21h;outputstringatds: dx ;waitforanykey.... movah,1 int21h movax,4c00h;exittooperatingsystem. int21h ends endstart;setentrypointandstoptheassembler. 实验结果 2、已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。 显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。 实验程序如下: ;multi-segmentexecutablefiletemplate. datasegment ;addyourdatahere! pkeydb"pressanykey...$" BUFdb12,3,-1,0,-4,55,32,89,5,-22 BEQU$-BUF CNdb0 ends stacksegment
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 实验 报告