微型计算机系统程序设计实验报告.docx

上传人:b****5 文档编号:28461580 上传时间:2023-07-13 格式:DOCX 页数:52 大小:24.13KB
下载 相关 举报
微型计算机系统程序设计实验报告.docx_第1页
第1页 / 共52页
微型计算机系统程序设计实验报告.docx_第2页
第2页 / 共52页
微型计算机系统程序设计实验报告.docx_第3页
第3页 / 共52页
微型计算机系统程序设计实验报告.docx_第4页
第4页 / 共52页
微型计算机系统程序设计实验报告.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

微型计算机系统程序设计实验报告.docx

《微型计算机系统程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《微型计算机系统程序设计实验报告.docx(52页珍藏版)》请在冰豆网上搜索。

微型计算机系统程序设计实验报告.docx

微型计算机系统程序设计实验报告

Part1.程序设计目求

Part2.程序设计要求

Part3.系统整体设计思路

Part4.程序框图设计

Part5.硬件电路设计

Part6.课程设计体会

Part7.程序设计的参考文献

Part8.程序设计代码附录(总共三题)

Part1:

程序设计的目的:

1.巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平.

2.掌握汇编语言程序的编制方法.

3.熟悉键盘控制和七段码管及74LS138芯片的使用.

Part2:

程序设计要求:

本课程设计内容包括两个方面

A.硬件设计:

显示器用6个八段数码段显示.键盘采用4*4矩阵形式.由8255控制

B.软件编程(上机编程内容)

题目一※显示器工作于查询方式.键盘工作于中断方式

※16个按键定位的键值为:

0~f,按任意键在显示器上现实对应的键值.lED显示器显示数值从右到左逐位显示

题目二※定义键盘按键:

10个数字键(0~9);

6个功能键:

+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)

※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果

※实现五位八进制数乘法运算.可连续做乘法运算

Part3:

程序设计的整体设计思路:

A.物理构想思路:

1)微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成.微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行.总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构.

2)微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8255A的简单微型计算机系统,就是通过编译程序和物理连接让单片机拥有简单的计算器运算功能,因此系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上.

解决物理连线方面的构想思路.就轮到程序设置的构想思路:

B.软件构想思路:

1)首先.是建立一个蕴含所有段码的数据表(在程序中的体现是TABLE),作用是存储段码,为程序的相应调用提供对应的段码.避免在程序中实现调用显示功能的时候造成过多的赘余.因为这次实验套装的LED管是共阳极管.所以只有列出对应的16个(0~F)适用于共阳极管的段码,才能满足显示的要求

2)其次.是建立选通信号的输出存储.也就是.在数据部分建立一个表格,里面能够告诉CPU的输出端要输出低电平的时候对应的代码指令:

为什么是输出低电平?

因为本次选用的LED管是共阳极管.所以要在CPU的输出端与显示器的输入端对应借口接入CPU输出的低电平.从而告诉是哪一个显示器被选中.对应要输出怎么样的段码(信息).方能准确进行数据的显示

3)在DATA设置完以后.就是功能键的自定义设计.这部分将会在物理连线框图里面提出(Part5)

4)进行主程序的编写思路部分,首先是对应4*4的键盘程序.在按下对应的键位以后.为了能在显示器中正确显示出对应的数值.必须进行扫描,首先是判断是否有按键.如果按得是数字键.那么就要在LED显示管上面对应的位数以及对应的数值进行显示.并且判断数字键之前是否已经按了运算的功能键.从而判断是否要进行运算.如果确认在数字键之前按了运算的功能键.则应该进行运算功能,并且将运算结果存储在内存单元里面.等待下一步的指令.并且重复检测.等到有在物理键上面检测到有等号.则将最终的结果释放在LED管子上进行显示

5)在运算结束后要实行放键功能,并且自动将所有的存储器(这里指的是RAM)上面的数据复位.等待实行重新的运算

Part4:

程序框图的设计:

Part5.

硬件电路设置:

Part6.

课程设计体会:

一个星期的微机课程设计,在这个星期之中通过不断找资料解决问题,回顾了上学期所学的内容,给了我们很好一个机会将所学内容综合应用实践,温故而知新,对未来的学习也有很大帮助.

但在课程设计之中也还发现一些不足的地方,我发现我能通过设计找出不足,更好的学习.并且给将来的学习提供一个好的解决榜样.所以通过这次程序设计的学习.我觉得我并不仅仅只学习到如何的运用汇编程序按照要求解答问题.而更是学习到了要怎么去思考.怎么去解决问题的方法.并且希望能够将这个所得应用在日后的学习之中.我觉得这才是本次课程设计的核心内容

Part7:

参考文献:

微型计算机系统原理--(教材)

微型计算机系统程序设计指导书--(实验题目)

微型计算机系统程序设计例题A--(实验例题)

Part8:

实验程序:

※设计代码※

part1:

※显示器工作于查询方式,键盘工作于中断方式

※16个按键定义的键值:

0-F,安任意键在显示器上现实对应的键值,LED显示器现实数值从右到左逐位现实

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

VA1DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH;A端口的6根控制线(控制6个LED显示屏)

VB2DB3FH,3FH,3FH,3FH,3FH,3FH

VB3DB00H,00H,00H,00H,00H,00H

VB4DB00H,00H,00H,00H,00H,00H

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

;0~F的显示段码

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0606H

MOVAL,88H

OUTDX,AL:

8255初始化

MOVBX,0000H:

BX清零

STT:

:

键盘测试

MOVAL,00H

MOVDX,0600H

OUTDX,AL

MOVDX,0604H

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JNZKEYABC

CALLDISP:

调用显示程序

JMPSTT

KEYABC:

CALLTIME:

延时去抖动

MOVDX,0604H

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JNZKEY

JMPSTT

KEY:

:

键盘扫描识别

MOVDX,0600H

MOVAL,0FEH

OUTDX,AL

MOVDX,0604H

INAL,DX

KEY_3:

TESTAL,10H

JNZKEY_7

CALLKEY3

JMPSTTK

KEY_7:

TESTAL,20H

JNZKEY_B

CALLKEY7

JMPSTTK

KEY_B:

TESTAL,40H

JNZKEY_F

CALLKEYB

JMPSTTK

KEY_F:

TESTAL,80H

JNZKEY_2

CALLKEYF

JMPSTTK

KEY_2:

MOVDX,0600H

MOVAL,0FDH

OUTDX,AL

MOVDX,0604H

INAL,DX

TESTAL,10H

JNZKEY_6

CALLKEY2

JMPSTTK

KEY_6:

TESTAL,20H

JNZKEY_A

CALLKEY6

JMPSTTK

KEY_A:

TESTAL,40H

JNZKEY_E

CALLKEYA

JMPSTTK

KEY_E:

TESTAL,80H

JNZKEY_1

CALLKEYE

JMPSTTK

KEY_1:

MOVDX,0600H

MOVAL,0FBH

OUTDX,AL

MOVDX,0604H

INAL,DX

TESTAL,10H

JNZKEY_5

CALLKEY1

JMPSTTK

KEY_5:

TESTAL,20H

JNZKEY_9

CALLKEY5

JNPSTTK

KEY_9:

TESTAL,40H

JNZKEY_D

CALLKEY9

JMPSTTK

KEY_D:

TESTAL,80H

JNZKEY_0

CALLKEYD

JMPSTTK

KEY_0:

MOVDX,0600H

MOVAL,0F7H

OUTDX,AL

MOVDX,0604H

INAL,DX

TESTAL,10H

JNZKEY_4

CALLKEY0

CALLSTTK

KEY_4:

TESTAL,20H

JNZKEY_8

CALLKEY4

JMPSTTK

KEY_8:

TESTAL,40H

JNZKEY_C

CALLKEY8

JMPSTTK

KEY_C:

TESTAL,80H

JNZKEY_G

CALLKEYC

KEY_G:

JMPSTTK

KEY0:

CALLLP1

MOVAL,3FH

MOV[SI+5],AL

MOVAL,00H

MOV[DI+5],AL

CALLDISP

RET

KEY1:

CALLLP1

MOVAL,06H

MOV[SI+5],AL

MOVAL,01H

MOV[DI+5],AL

CALLDISP

RET

KEY2:

CALLLP1

MOVAL,5BH

MOV[SI+5],AL

MOVAL,02H

MOV[DI+5],AL

CALLDISP

RET

KEY3:

CALLLP1

MOVAL,4FH

MOV[SI+5],AL

MOVAL,03H

MOV[DI+5],AL

CALLDISP

RET

KEY4:

CALLLP1

MOVAL,66H

MOV[SI+5],AL

MOVAL,04H

MOV[DI+5],AL

CALLDISP

RET

KEY5:

CALLLP1

MOVAL,6DH

MOV[SI+5],AL

MOVAL,05H

MOV[DI+5],AL

CALLDISP

RET

KEY6:

CALLLP1

MOVAL,7DH

MOV[SI+5],AL

MOVAL,06H

MOV[DI+5],AL

CALLDISP

RET

KEY7:

CALLLP1

MOVAL,07H

MOV[SI+5],AL

MOVAL,07H

MOV[DI+5],AL

CALLDISP

RET

KEY8:

CALLLP1

MOVAL,7FH

MOV[SI+5],AL

MOVAL,08H

MOV[DI+5],AL

CALLDISP

RET

KEY9:

CALLLP1

MOVAL,6FH

MOV[SI+5],AL

MOVAL,09H

MOV[DI+5],AL

CALLDISP

RET

KEYA:

CALLLP1

MOVAL,77H

MOV[SI+5],AL

MOVAL,0AH

MOV[DI+5],AL

CALLDISP

RET

KEYB:

CALLLP1

MOVAL,7CH

MOV[SI+5],AL

MOVAL,0BH

MOV[DI+5],AL

CALLDISP

RET

KEYC:

CALLLP1

MOVAL,39H

MOV[SI+5],AL

MOVAL,0CH

MOV[DI+5],AL

CALLDISP

RET

KEYD:

CALLLP1

MOVAL,5EH

MOV[SI+5],AL

MOVAL,0DH

MOV[DI+5],AL

CALLDISP

RET

KEYE:

CALLLP1

MOVAL,79H

MOV[SI+5],AL

MOVAL,0EH

MOV[DI+5],AL

CALLDISP

RET

KEYF:

CALLLP1

MOVAL,71H

MOV[SI+5],AL

MOVAL,0FH

MOV[DI+5],AL

CALLDISP

RET

;上面是键盘键位的设置以及对应子程序的编写

LP1:

(数据段以为保存子程序,前移6位)

MOVSI,0FFSETVA2

MOVDI,OFFSETVA3

MOVCX,0005H

LP2:

MOVAL,[SI+4]

MOV[SI+5],AL

MOVAL,[DI+4]

MOV[DI+5],AL

DECSI

DECDI

LOOPLP2

RET

DISP:

(6位显示程序)

MOVSI,OFFSETVA1

MOVDI,OFFSETVA2

MOVDL,[DI+5]

CMPDL,3FH

JNZDIR5

MOVDL,[DI+4]

CMPDL,3FH

JNZDIR4

MOVDL,[DI+3]

CMPDL,3FH

JNZDIR3

MOVDL,[DI+2]

CMPDL,3FH

JNZDIR2

MOVDL,[DI+1]

CMPDL,3FH

JNZDIR1

JMPDIR0

DIR5:

MOVCX,0006H

JMPDIR

DIR4:

MOVCX,0005H

JMPDIR

DIR3:

MOVCX,0004H

JMPDIR

DIR2:

MOVCX,0003H

JMPDIR

DIR1:

MOVCX,0002H

JMPDIR

DIR0:

MOVCX,0001H

DIR:

MOVDX,0600H

MOVAL,[SI]

OUTDX,AL

MOVDX,0602H

MOVAL,[DI]

OUTDX,AL

CALLTIME

INCSI

INCDI

LOOPDIR

RET

TIME:

(延时程序)

PUSHAX

PUSHCX

MOVCX,0005H

TIME1:

MOVAX,00F0H

TIME2:

DECAX

JNZTIME2

LOOPTIME1

POPCX

POPAX

RET

STTK:

(按键测试程序)

CALLDISP

MOVAL,00H

MOVDX,0600H

OUTDX,AL

MOVDX,0604H

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JNZSTTK

JMPSTT

CODEENDS

ENDSTART

Part2:

※显示器工作于查询方式,键盘工作于中断方式

※定义键盘按键:

10个数字键(0~9);

6个功能键:

+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)

※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

VA1DB0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

VA2DB3FH,3FH,3FH,3FH,3FH,3FH

VA3DB00H,00H,00H,00H,00H,00H

VA4DB00H,00H,00H,00H,00H,00H

SUMDB00H,00H,00H,00H,00H,00H

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0606H

MOVAL,88H

OUTDX,AL

MOVBX,0000H

STT:

MOVAL,00H

MOVDX,0600H

OUTDX,AL

MOVDX,0604H

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JNZKEYABC

CALLDISP

JMPSTT

KEYABC:

CALLDELAY

MOVDX,0604H

INAL,DX

ANDAL,0F0H

CMPAL,0F0H

JNZKEY

JMPSTT

KEY:

MOVDX,0600H

MOVAL,0FEH

OUTDX,AL

MOVDX,0604H

INAL,DX

KEY_0:

TESTAL,10H

JNZKEY_1

CALLKEY0

JMPSTTK

KEY_1:

TESTAL,20H

JNZKEY_4

CALLKEY1

JMPSTTK

KEY_4:

TESTAL,40H

JNZKEY_7

CALLKEY4

JMPSTTK

KEY_7:

TESTAL,80H

JNZKEY2C

CALLKEY7

JMPSTTK

KEY2C:

MOVDX,0600H

MOVAL,0FDH

OUTDX,AL

MOVDX,0604H

INAL,DX

KEY_CLEAR:

TESTAL,10H

JNZKEY_2

CALLKEYCLEAR

JMPSTTK

KEY_2:

TESTAL,20H

JNZKEY_5

CALLKEY2

JMPSTTK

KEY_5:

TESTAL,40H

JNZKEY_8

CALLKEY5

JMPSTTK

KEY_8:

TESTAL,80H

JNZKEY3C

CALLKEY8

JMPSTTK

KEY3C:

MOVDX,0600H

MOVAL,0FBH

OUTDX,AL

MOVDX,0604H

INAL,DX

KEY_QUAL:

TESTAL,10H

JNZKEY_3

CALLKEYEQUAL

JMPSTTK

KEY_3:

TESTAL,20H

JNZKEY_6

CALLKEY3

JMPSTTK

KEY_6:

TESTAL,40H

JNZKEY_9

CALLKEY6

JMPSTTK

KEY_9:

TESTAL,80H

JNZKEY4C

CALLKEY9

JMPSTTK

KEY4C:

MOVDX,0600H

MOVAL,0F7H

OUTDX,AL

MOVDX,0604H

INAL,DX

KEY_PLUS:

TESTAL,10H

JNZKEY_MINUS

CALLKEYPLUS

JMPSTTK

KEY_MINUS:

TESTAL,20H

JNZKEY_MUL

JMPSTTK

KEY_MUL:

TESTAL,40H

JNZKEY_DIV

JMPSTTK

KEY_DIV:

TESTAL,80H

KEY_G:

JMPSTTK

;结束按键扫描,下面是按键处理函数(与第一个程序不同的地方是功能键的设置问题)

KEY0:

CMPBH,00H

JZKEY0_1

CALLCLEAR

KEY0_1:

CALLLP1

MOVAL,3FH

MOV[SI+4],AL

MOVAL,00H

MOV[DI+4],AL

CALLDISP

RET

KEY1:

CMPBH,00H

JZKEY1_1

CALLCLEAR

KEY1_1:

CALLLP1

MOVAL,06H

MOV[SI+4],AL

MOVAL,01H

MOV[DI+4],AL

CALLDISP

RET

KEY2:

CMPBH,00H

JZKEY2_1

CALLCLEAR

KEY2_1:

CALLLP1

MOVAL,5BH

MOV[SI+4],AL

MOVAL,02H

MOV[DI+4],AL

CALLDISP

RET

KEY3:

CMPBH,00H

JZKEY3_1

CALLCLEAR

KEY3_1:

CALLLP1

MOVAL,4FH

MOV[SI+4],AL

MOVAL,03H

MOV[DI+4],AL

CALLDISP

RET

KEY4:

CMPBH,00H

JZKEY4_1

CALLCLEAR

KEY4_1:

CALLLP1

MOVAL,66H

MOV[SI+4],AL

MOVAL,04H

MOV[DI+4],AL

CALLDISP

RET

KEY5:

CMPBH,00H

JZKEY5_1

CALLCLEAR

KEY5_1:

CALLLP1

MOVAL,6DH

MOV[SI+4],AL

MOVAL,05H

MOV[DI+4],AL

CALLDISP

RET

KEY6:

CMPBH,00H

JZKEY6_1

CALLCLEAR

KEY6_1:

CALLLP1

MOVAL,7DH

MOV[SI+4],AL

MOVAL,06H

MOV[DI+4],AL

CALLDISP

RET

KEY7:

CMPBH,00H

JZKEY7_1

CALLCLEAR

KEY7_1:

CALLLP1

MOVAL,07H

MOV[SI+4],AL

MOVAL,07H

MOV[DI+4],AL

CALLDISP

RET

KEY8:

CMPBH,00H

JZKEY8_1

CALLCLEAR

KEY8_1:

CALLLP1

MOVAL,7FH

MOV[SI+4],AL

MOVAL,08H

MOV[DI+4],AL

CALLDISP

RET

KEY9:

CMPBH,00H

JZKEY9_1

CALLCLEAR

KEY9_1:

CALLLP1

MOVAL,6FH

MOV[SI+4],AL

MOVAL,09H

MOV[DI+4],AL

CALLDISP

RET

KE

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1