微机原理与接口技术实验报告.docx
《微机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术实验报告
微机原理与接口技术实验报告
6、装入程序
四实验结果
1、编译成功:
2、链接成功:
3、装入程序成功:
第46页共87页
46
第47页共87页47
4、实验运行结果截图
五思考与总结:
通过此次试验,我了解INT10H各功能块的作用及用法并掌握了字符方式下PC机显示器显示控制,对其有了初步的了解。
在实验当中虽然遇到很多的问题但是老师都一一为我解答了,让我顺利完成了实验。
在以后的学习过程中还需要注意此类问题,真正的掌握这些知识点,做到灵活运用自己所掌握的知识。
第48页共87页48
实验九中断特性及8259应用编程实验
一实验目的
1.认识TDN86/51系统的中断特性2.掌握8259中断控制器的工作原理3.掌握8259可编程中断控制器的应用编程
二实验设备
1.TDN86/51或TDN86/88教学实验系统一台2.排线、导线一根
三实验内容及步骤实验1
1编写源代码:
STACKSEGMENTSTACKDW64DUP(?
)STACKENDSCODESEGMENT
ASSUMECS:
CODE
START:
PUSHDS;保存数据段
MOVAX,0000H;将AX清零,将0000传给AX
MOVDS,AX;数据段清零,将AX内容传给DS,所以DS清零MOVAX,OFFSETIRQ7;取中断程序入口地址(相对地址)ADDAX,2000H;加装载时IP=2000地址(绝对地址)
MOVSI,003CH;填8259中断7中断矢量,把003CH内容传给SIMOV[SI],AX;填偏移量矢量,将AX地址传给SIMOVAX,0000H;地址段CS=0000HMOVSI,003EH;将003E传给SI
MOV[SI],AX;填地址段矢量,将AX地址传给SICLI;关中断POPDS;弹栈
INAL,21H;读8259中断屏蔽字,把21H端口内容给ALANDAL,7FH;开8259中断7
OUT21H,AL;将AL内容回传给21H
第49页共87页
49
MOVCX,000AH;循环10次
A1:
CMPCX,0000H;判断是否完成循环JNZA2;跳转
INAL,21H;读8259中断屏蔽字,把21H端口内容给ALORAL,80H;关8259中断7
OUT21H,AL;将AL内容回传给21HSTIHLTA2:
STI
JMPA1;无条件跳转至A1
IRQ7:
MOVAX,0137H;中断程序入口
INT10H;返回操作程序,结束程序运行MOVAX,0120H;中断程序出口
INT10H;返回操作程序,结束程序运行DECCX;CX自减1MOVAL,20H;将20传给ALOUT20H,AL;将AL回传给20CLIIRETCODEENDSENDSTART
2.编译、连接、装载3.G=0000:
2000运行程序
4.重复按KK2微动开关,显示屏上应用“7”来响应,直到按10次后,系统处于停机状态。
实验2
1编写源代码:
STACKSEGMENTSTACKDW64DUP(?
)STACKENDSCODESEGMENT
ASSUMECS:
CODE
START:
PUSHDS;保存数据段
MOVAX,0000H;将AX清零,将0000传给AX
MOVDS,AX;数据段清零,将AX内容传给DS,所以DS清零MOVAX,OFFSETIRQ6;取中断程序入口地址(相对地址)ADDAX,2000H;加装载时IP=2000地址(绝对地址)
MOVSI,0038H;填8259中断6中断矢量,把0038H内容传给SI
第50页共87页50
实验报告
课程名称微机原理与接口技术
专业计科班级五班姓名胡益学号10030507指导教师朱红伟实验成绩
第1页共87页1
实验一系统认识实验.............................................................................................................3实验二数码转换编程及程序调试.......................................................................................8实验三运算类编程实验.....................................................................................................12实验四分支程序设计实验...............................................................................................17实验五分支程序设计实验2..............................................................................................23实验六循环程序设计.........................................................................................................31实验七子程序设计.............................................................................................................39实验八显示程序实验.........................................................................................................45实验九中断特性及8259应用编程实验.............................................................................49实验十8255并行接口应用实验..........................................................................................55实验十一8253定时/计数器应用实验...............................................................................60实验十二8253定时器应用实验........................................................................................66实验十三A/D转换实验.......................................................................................................72实验十四D/A转换实验.....................................................................................................77实验十五8255键盘及显示接口实验................................................................................81实验十六步进电机实验.....................................................................................................85
共3页:
上一页123下一页
第2页共87页2
实验一系统认识实验
一实验目的
掌握TDN86/51或TDN86、88教学系统的基本操作。
二实验设备
TDN86/51或TDN86、88教学实验系统一台
三实验内容及步骤
1.使用串行通讯电缆将实验系统与PC微机相连。
2.打开实验环境WMD86.3.输入源代码:
STACKSEGMENTSTACK;DW64DUP(?
);STACKENDS
CODESEGMENT;ASSUMECS:
CODESTART:
MOVDI,3500H;MOVCX,0010H;MOVAX,0000HA1:
MOV[DI],AL;INCDI;LOOPA1;A2:
JMPA2CODEENDS;ENDSTART;
4.进行端口测试。
5.进行汇编、链接。
6.调试无误,并载入程序。
四实验结果
1.输入U2000命令进行反汇编,检查程序是否正确装入。
如图(4-1)
第3页共87页3
图(4-1)检查程序是否正确装入
2.当发现源程序输入错误或需调试,输入指令A来修改,如修改2000句MOVDI,3500。
如图(4-2)
图(4-2)修改2000句
3.对程序进行连续运行。
结果如图(4-3)
第4页共87页
4
图(4-3)连续运行
第5页共87页5
A1:
MOVAL,BLINT10HINCBLPUSHCX
MOVCX,0FFFFHA2:
LOOPA2POPCXDECCXJNZA1INT03HCODEENDS
ENDSTART
2编译、连接、装载3运行程序并观察结果
四实验结果
1.查看程序是否在如成功,结果如图(4-1)所示:
图4-1数据载入成功
第41页共87页
41
2.输入数据,如图(4-2)所示:
图4-2输入数据
3.运行程序并查看数组1和数组2的结果,如图(4-3)所示:
图4-3程序结果数组1和数组2
实验2(结果)
1.载入程序,如图(4-4)
第42页共87页
42
2.运行程序,如图(4-5)
第43页共87页
43
五思考与总结
本次实验我们做得是子程序设计实验。
主要掌握子程序的结构和分支程序的设计、调试方法。
这次实验,我有一些不懂的地方,但是通过老师给的课件将所有的程序都加以注释,这样使我对整个实验的代码都了解了,加深了我对分支实验各方面知识点的理解。
第44页共87页44
实验八显示程序实验
一实验目的
1.了解INT10H各功能快的作用及用法。
2.掌握字符方式下PC机显示器显示控制。
二实验设备
TDN86/51或TDN86/88教学实验系统一台
三实验内容及步骤
1、连接试验箱2、打开实验环境
3、输入源代码流程图(如下)
STACKSEGMENTSTACK;堆栈段定义DW64DUP(?
);重复64次STACKENDS;段定义结束
CODESEGMENT;存放在堆空间中的代码段ASSUMECS:
CODE;段分配语句(伪指令)
START:
MOVCX,001AH;显示字符个数(26)送入CXMOVBL,41H;显示字符‘A’MOVAH,01H;显示一个字符A1:
MOVAL,BLINT10H
INCBL;显示下一个字符PUSHCX
MOVCX,0FFFFHA2:
LOOPA2POPCXDECCXJNZA1INT03HCODEENDS
ENDSTART4.
5、连接
第45页共87页
45
实验六循环程序设计
一实验目的
1.加深对循环结构的理解2.掌握循环结构程序设计的方法。
3.熟练掌握调试循环程序的方法。
二实验设备
TDN86/51或TDN86/88教学实验系统一台
第31页共87页
31
三实验内容及步骤
1.流程图:
实验一:
1DX2BL[BL]AL[BL]+1AL[AL]*[BL]AX[DX]+[AX]DXN[AX]>200结束程序源代码:
STACKSEGMENT
DW64DUP(?
)STACKENDSCODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0001H;将0001H传送给DX,DX=0001HMOVBL,02H;将02H传送给BL,BL=02HA1:
MOVAL,BL;将BL传送给AL
INCBL;对BL进行加一在传送给BL
MULBL;将AL与BL相乘并将结果传送给AXADDDX,AX;AX与DX相加并将结果传给DX
第32页共87页32
CMPAX,00C8H;用目的操作数减去源操作数,AX减去00C8H,比较AX数是否大
于00C8H
JNAA1;当CF=1或ZF=1时进行跳转,如跳转则进行A1,如不跳转则进行
A2
A2:
INT03H;对操作数加1CODEENDS
ENDSTART
第33页共87页33
开始数据区首址D1数据个数CLCH、BL置0DI增1数据首位=1?
NYBL+1BLDI增1NCX=0存结果结束第34页共87页
34
实验二:
流程图:
1.程序源代码:
STACKSEGMENTSTACKDW64DUP(?
)STACKENDSCODESEGMENT
ASSUMECS:
CODE
START:
MOVDI,3000H;设数据区首址,将3000H传给DI,DI=3000HMOVCL,[DI];送数据个数,将DI的值传给CLXORCH,CH;CH清0MOVBL,CH;BL清0
INCDI;指针指向第一个数据
A1:
MOVAL,[DI];将DI的值传给ALTESTAL,80H;判断数据首位是否为1
JEA2;判断,当ZF=1时跳转到A2,如不是则顺序执行INCBL;负数个数累加
A2:
INCDI;指针指向第一个数据LOOPA1;循环指令,循环执行A1MOV[DI],BL;将BL数据传给DIINT03H;对操作数进行加1CODEENDS
共3页:
上一页123下一页
ENDSTART
2.输入程序并检查无误,经汇编、连接后装入系统3.E3000↙输入数据如下:
3000=06(数据个数)3001=12、88、82、90、22、334.G=0000:
2000↙,运行实验程序。
5.D=3007↙,显示结果03
第35页共87页
35
四实验结果
1.实验一结果如图(4-1)所示:
图4-1实验结果为045FH
实验二(结果):
1.输入数据,结果如图(4-2)所示:
图4-2数据输入
第36页共87页
36
2.运行程序,查看结果如图(4-3)所示:
第37页共87页37
五思考与总结
这次实验我们做得时关于循环程序的实验:
S=1+2*3+3*4+4*5+?
+N(N+1),直到N*(N+1)项大于200为止。
本次实验我通过观察流程图来自己设计有关程序,这样使我对循环结构有了更深的了解,加深了我对乘法指令和加法指令的理解。
掌握了循环结构程序设计的方法,知道如何对循环程序进行调试。
在实验过程中也遇到了不少的困难,使实验无法继续进行下去,不过在老师的帮助下解决了困难,顺利完成了实验,使我受益匪浅。
第38页共87页38
实验七子程序设计
一实验目的
1.学习子程序的定义和调用方法2.掌握子程序的结构
3.熟练掌握子程序的程序设计、编制及调用二实验设备
TDN86/51或TDN86/88教学实验系统一台
三实验内容及步骤实验1
1编写源代码:
DATASEGMENT
ARY1DW3DUP(?
)SUM1DW?
ARY2DW3DUP(?
)SUM2DW?
DATAENDS
STACKSEGMENTSTACK
SADW50DUP(?
)TOPEQULENGTHSASTACKENDSCODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKMAINPROCFARSTART:
MOVAX,DATA;数据段数据设置
MOVDS,AX;将AX中的内容传送给DSMOVAX,STACK
MOVSS,AX;将AX中的内容传送给SSMOVSP,TOP
LEASI,ARY1;数组1首地址,入口参数MOVCX,LENGTHARY1;数组1长度,入口参数CALLSUM;调用求和子程序
第39页共87页
39
LEASI,ARY2;数组2首地址,入口参数MOVCX,LENGTHARY2;数组2长度,入口参数CALLSUM;调用求和子程序RET;无参数段内返回MAINENDP
SUMPROCNEAR;子程序XORAX,AX;AX清0
L1:
ADDAX,WORDPTR[SI];加数组元素INCSI;对SI进行加1INCSI;对SI进行加1LOOPL1;结束L1
MOVWORDPTR[SI],AX;数组和送入SUMMOVAH,4CH;准备结束程序INT21H;中断程序运行RET;无参数段内返回SUMENDP;终止求和子程序CODEENDSENDSTART
2编译、连接、装载3u2000查看是否装载成功
4E****:
0000,输入三个字数据(数组1的数据)5E****:
0008,输入三个字数据(数组2的数据)6运行程序
7查看结果,结果存放在****:
0006(数组1的累加和)和****:
000E单元(数组2的累加和)
实验2
1编写源代码:
STACKSEGMENTSTACKDW64DUP(?
)STACKENDSCODESEGMENT
ASSUMECS:
CODESTART:
MOVCX,001AHMOVBL,41HMOVAH,01H
第40页共87页40
共3页:
上一页123下一页