1课程设计课程名称微机课程设计题目名称__计算器(1)学生学院_____自动化________专业班级____自动化(1)班___学号3106000836学生姓名___谢晓新___指导教师______李传芳_____2008年12月25日2广东工业大学课程设计任务书题目名称计算器(1)学生学院自动化专业班级自动化(1)班姓名谢晓新学号3106000836一、课程设计的目的1、巩固和加深对《微机原理及应用》课程内容的认识和理解,提高应用水平2、掌握汇编语言程序的编程方法3、熟悉键盘控制和七段数码管的使用二、课程设计的内容1.把存储器单元中的0AH,02H,0FH,09H从四位七段LED数码管同时显示出来,要求做成循环程序,并使用XLAT来译码。2.编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示值能够实现左移功能。5A7FB3C03.实现:a)定义键盘按键,5个为数字键3、4、5、6、7,7个功能键:减号—,除号÷,等号=;b)可进行三位8进制减法运算;c)可进行两位10进制除法运算。三、课程设计应完成的工作1.搜集、整理和研究资料,可参考教材后的实例。2.按电路框图连接电路,编写程序完成各个程序设计要求,并完成调试。3.完成课程设计的报告书一份。3四、课程设计进程安排序号设计各阶段内容地点起止日期1领取任务书实2-20612.222收集,整理资料图书馆、宿舍12.223上机编写调试程序实2-20612.23~12.244撰写课程设计报告宿舍12.25五、应收集的资料及主要参考文献1.微型计算机原理及应用.许立梓等编.北京:机械工业出版社,20032.微型计算机原理及应用—习题解答、试验指导及课程设计.许立梓等编.北京:机械工业出版社,2008发出任务书日期:2008年12月22日指导教师签名:计划完成日期:2008年12月25日基层教学单位责任人签章:主管院长签章:4目录一、源程序…………………………………………………………………………51.程序一………………………………………………………………………51.1题目……………………………………………………………………51.2源程序…………………………………………………………………52.程序二………………………………………………………………………62.1题目……………………………………………………………………62.2源程序…………………………………………………………………63.程序三………………………………………………………………………103.1题目……………………………………………………………………103.2源程序…………………………………………………………………10二、心得与体会……………………………………………………………………19三、参考文献………………………………………………………………………1951.程序一1.1题目:把存储器单元中的0AH,02H,0FH,09H从四位七段LED数码管同时显示出来,要求做成循环程序,并使用XLAT来译码。1.2源程序:STACKSEGMENTSTACKDW64DUP(?)STACKENDSDATASEGMENTTAB1DB0AH,02H,0FH,09H;设置四位查询位TAB2DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;设置0~F的十六位数码管段码DB7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,80H;8255A初始化OUT63H,ALL1:MOVDL,0FEHMOVSI,OFFSETTAB1MOVCX,0004HL2:MOVAL,DL;位码送给ALOUT60H,ALMOVAL,[SI]MOVBX,OFFSETTAB2;查表取出数码管的段码XLATTAB2OUT61H,AL;查表的段码送A口显示INCSIROLDL,01H;下个要显示的数码管位码CALLTIMELOOPL2JMPL1TIME:PUSHAX;延时程序PUSHCXMOVCX,0002HTIME1:MOVAX,0300HTIME2:DECAXJNZTIME2LOOPTIME1POPCXPOPAXRETCODEENDSENDSTART62.程序一2.1题目:2.编写程序,实现以下键盘功能,按任意键在显示器上显示对应键值,要求显示值能够实现左移功能。5A7FB3C02.2源程序:STACKSEGMENTSTACKDW64DUP(?)STACKENDSDATASEGMENTVAR1DB07H,0BH,0DH,0EHVAR2DB3FH,3FH,3FH,3FH,3FHVAR3DB00H,00H,00H,00H,00HTABLDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,88HOUT63H,AL;8255A初始化STT:MOVAL,00H;键盘测试OUT60H,ALNEXT:INAL,62HANDAL,60HCMPAL,60HJNZKEYABCCALLDISP;调用显示程序JMPSTT;------------------------------------------------------------------------------KEYABC:CALLTIME;延时,去抖动INAL,62HANDAL,60HCMPAL,60HJNZKEYJMPSTTKEY_5:MOVAL,0FEH;键盘扫描识别OUT60H,ALINAL,62HTESTAL,40HJNZKEY_BCALLKEY5JMPSTTK7KEY_B:TESTAL,20HJNZKEY_ACALLKEYBJMPSTTKKEY_A:MOVAL,0FDHOUT60H,ALINAL,62HTESTAL,40HJNZKEY_3CALLKEYAJMPSTTKKEY_3:TESTAL,20HJNZKEY_7CALLKEY3JMPSTTKKEY_7:MOVAL,0FBHOUT60H,ALINAL,62HTESTAL,40HJNZKEY_CCALLKEY7JMPSTTKKEY_C:TESTAL,20HJNZKEY_FCALLKEYCJMPSTTKKEY_F:MOVAL,0F7HOUT60H,ALINAL,62HTESTAL,40HJNZKEY_0CALLKEYFJMPSTTKKEY_0:TESTAL,20HJNZKEY_01CALLKEY0KEY_01:JMPSTTK;------------------------------------------------------------------------------;按键5处理子程序KEY5:CALLLP1;低4位字节前移MOVAL,05HMOV[DI+4],ALLEABX,TABL;查表取出要显示数字的数码管段码XLATTABL8MOV[SI+4],ALCALLDISP;显示RET;返回;------------------------------------------------------------------------------KEYB:CALLLP1;按键B处理子程序MOVAL,0BHMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEYA:CALLLP1;按键A处理子程序MOVAL,0AHMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEY3:CALLLP1;按键3处理子程序MOVAL,03HMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEY7:CALLLP1;按键7处理子程序MOVAL,07HMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEYC:CALLLP1;按键C处理子程序MOVAL,0CHMOV[DI+4],ALLEABX,TABL9XLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEYF:CALLLP1;按键F处理子程序MOVAL,0FHMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------KEY0:CALLLP1;按键0处理子程序MOVAL,00HMOV[DI+4],ALLEABX,TABLXLATTABLMOV[SI+4],ALCALLDISPRET;------------------------------------------------------------------------------LP1:MOVCX,0004H;数据移位保存子程序(前移四位)MOVSI,OFFSETVAR2MOVDI,OFFSETVAR3LP2:MOVAL,[SI+3]MOV[SI+4],ALMOVAL,[DI+3]MOV[DI+4],ALDECSIDECDILOOPLP2RET;------------------------------------------------------------------------------DISP:MOVSI,OFFSETVAR1;显示子程序MOVDI,OFFSETVAR2MOVCX,0004HDIR:MOVAL,[SI]OUT60H,ALMOVAL,[DI]OUT61H,ALCALLTIMEINCSI10INCDILOOPDIRRET;------------------------------------------------------------------------------TIME:PUSHAX;延时程序PUSHCXMOVCX,0002HTIME1:MOVAX,0300HTIME2:DECAXJNZTIME2LOOPTIME1POPCXPOPAXRET;------------------------------------------------------------------------------STTK:CALLDISP;放键测试程序MOVAL,00HOUT60H,ALINAL,62HANDAL,60HCMPAL,60HJNZSTTKJMPSTTCODEENDSENDSTART3.程序一3.1题目:实现:a)定义键盘按键,5个为数字键3、4、5、6、7,7个功能键:减号—,除号÷,等号=;b)可进行三位8进制减法运算;c