微机课程设计.docx
SHANDONGUNrVERSFTY课题微机原理课程设计姓名:杨壮志学号:2班级:09级电气2班同组者:赵肖瑞指导老师:刘志珍简介本课程设计运用软件实现电子时钟功能。用emu8086进行运行时,本程序是调用系统的时间,用CmU8086调试程序,在用PE2进行校时时,首先进入界面的是“1.AOSHIHAO”字母样式,然后图框,我们设计成了房子的样式。一.设计目的:1 .再次熟识驾驭8086/88指令系统,以及数据段的定义:2 .驾驭8259A.8253.8255A的运用方法:3 .学习程序设计的基本思路和方法;4 .了解一些有关宏定义,宏调用的方法;5 .驾驭中断类型号为21H和IOH的部分功能.二、设计要求:运用汇编语言设计了个电子时钟,并旦能实现以下功能:1 .显示型的外图框图:2 .在屏幕中间显示日期,星期,以刚好问:3 显示本程序的制作人员:三、硬件设计原理硬件设计用到的芯片是8086、8259、8253、8255、8284.首先,我们利用8284芯片加上晶报来产生脉冲源,并且使8253工作在方式2,即依据脉冲信号每一秒钟向8259发出一个中断信号,由8259向8086CPU发出中断恳求,8086响应恳求,并执行肯定的程序,通过8255并行端口B通道来输出数据,限制1.ED数码管的显示数字.J:rsHNN±工工rccccrrrcccccI11.1Ssssssis匕卜2彳tRRRRAff1.ff1.MiiiiiiiBI1.II:iiiii1.S3Hiiiiis?河三斡gBW三丝三k1.BW1«1.xI1.直:!”:K1.1.iiUVI<f福i1.i1.1.b1.4U1.=M4-H=-HJJI1.mHMI1.ImjU四、部分子程序功能简介:程序的起先,我们定义了四个宏定义,是显示彩色字符用的宏,显示字符中用的宏。定义这两个宏的目的是在屏幕中间显示外框,在小框中显示“1.AOS1.1.1.HAo”与房子相悔作,在大框中显示日期、星期、时间、程序制作人员等内容,大框中为绿底红字,样式美观。程序的下半部分是程序的主要内容,也即调用系统日期、时间、星期并显示在框中。调用这三方面内容比较相像,即分别将系统日期、星期、时间取出,并调用装换为ASCn码子程序,并将其显示在屏幕中。该调用系统日期、时间、星期的程序为循环程序,通过不断调用时间,刷新屏幕,通过延时程序使光标稳定。1. DISCHAR/DIS(房子图案显示程序)在宏定义里,设置两个形参变量X为移动光标的位置以及Y为输出字符的ASCI1.码,在下面调用宏中,赐予变量X,Y不同的实参,输出图案,其中调用D1.SCHAR实现上方字符的输出,调用DIS实现外壳以及彩色字的输出。2. ASCASC1(日期时间转换为ASCn子程序)调用系统日期或时间后,寄存器中存放的是数值而不是ASCII码,所以,要调用转换程序转换为ASCI1.码,调用该程序,并将日期和时间分别放入到BUFFERI和BUFFER中,以便读取并显示。五.程序流程图:程序流程图如下:六、源程序DATASEGMENTDBUFFERDB"THETIMEIS:".7DUP21DUP(")Dbufferidb,thedateis:,.28dupc,)T1.DBTHEDAYIS:MONDY'.20DUP(")T2DB,THEDAYIS:TUESDAY'.2ODUP(',)T3DB'THEDAYIS:WEDNESDAY'.20DUP(")T4DB,THEDAYIS:THURSDAY'.20DUPr)T5DB,THEDAYIS:FRIDAY,20DUP(,')T6DB'THEDAYIS:SATURDAY'.20DUPC')T7DB'THEDAYIS:SUNDAY'.20DUP(")WORDSDB1.AOSHIHAO'MAKERDB'DESIGNEDBYyzzzxr,SPACEDB30DUP('')DATAENDSSSEGSEGMENTSTACKDW2DUP()TOPI.ABE1.WORDSSEGENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSEG.ES:DATASTART:MOVX,DADMOVDS.AXMOVES.AXMOVAX,SSEGMOVSS.AXMOVSROhhSETTOPC1.DD1.SMACROX.Y;显示彩色字符用的宏;X的位巴,Y&ASCIIPUSHCXMOVAH,()2冲断IOH的2号理光标位功能MOVBH.0MOVDX.X;定位,DH是行,D1.是列INTIOHMOVAH.9JOH的9号功能MOVA1.YMOVBH.0MOVB1.1ODH;浅洋红MOVCX.IINTIOHPOPCXENDMD1.SIMACROX.Y;显示彩色字符用的宏,;X的位置,YSASCIIPUSHCXMOVAU,02;中断IOH的2号理光标位功能MOVBH.0MOVDX.X:定位,DH是行,D1.是列INTIOHMOVAH.9;IoH的9号功能MOVA1.YMOVBH.0MOVB1.OAH;浅绿色MOVCXJINTIOHPOPCXENDMDIS0B2DH;'Disstringmacrox.y;显示字符串的宏DIS0B2FH:'MOVAH.02DIS0B3IH.,(3)XOR1.1.,BHDIS0B33H,'MOVDX.X;定位,DH是行,D1.SD1.是列DIS121DH.'(a'INTIOHDISI2IFH.''MOVDX.OFFSETY;显示字符串DIS122IH.,(3>MOVAH,09HDISI223H,'(3)'INT21HD1.SI225H;,ENDMDIS1227H.,(g>,PUSHCXDISi229H,'(aPUSHAXDISI22BH;'PUSHDXD1.S122DH;'YANG:DIS1.W20H,'1.'D1.SI22FH:'DIS1.0921H.'A,DISI23IH,WDISI()922H."O'DIS1233H,D1.SI0925H.'S'DISOCIBH:'D1.S1.0926H.'H,D1.SOD1BH.''DISI()927H.,I'D1.SOEIBHZ(三),DIS1.092AH.,H'DISOF1BH.'<D1.S1.092BH.,A,D1.SIo1.BHDISI092CH.,O,DISDISDISOC33H:'DISOBIDHD1.S()D33H,'DISOB1.FHD1.SOE33H,D1.S0B21H.''DIS0F33H.''DISOB23H:'D1.SIO33H:'DISOB25H:'DISD1.S0B27H.'(a'D1.S081FH.'(g)'DIS0B29H.'"DIS091EH,DISDISOA1.DH二DIS082FH;'显示日期DISO93OH,''MOVDX.ODCHDIS0A3IH:'MOVCX.23D1.S072IH,''MOVBX,(X)3CHDISO723H;'MVAX,I300HD1.S0725H;INTIOHDISO727H;'MOVSI.13DIS0729H,''MOVBX.10()DIS072BH,''DIVB1.DISO72DH:'MOVAH,2CH;取时间程序;显示边框结束INT2IHPOPDXMOVA1.,CHPOPAXCA1.1.ASC;将时间数值转换成POPCXSC11码字符YU:MOVAH,2AH;取日期程序INCSIINT21HMOVA1.C1.MOVSI,13CA1.1.ASCMOVAX.CXINCSIMOVBXJ(X)MOVA1.DHDIVB1.CA1.1.ASCMOVB1.AHMovBroffsetdbuffer:将时间显示CA1.1.ASC1.;日期数值传换成相应的在屏麟上ASCII码字符MOVDX.OFICHMOVA1.B1.MOVCX.23CA1.1.ASCIMOVBX,(X)3CHINCSIMOVAX.I300HMOVA1.DHINTIOHCA1.1.ASCIMOVAH,2AH;显示星期几程序INCSIINT2IHMOVA1.D1.CMP1.01CA1.1.ASCIJNEYIMOVBP,OFFSETDBUFFERI;在屏幕上movBroffsettiJMPYY1.:CMPA1.,02JNEY2MOVBP,OFFSETT2JMPYY2:CMPA1.03JNEY3MOVBP.OFFSETT3JMPYY3:CMPA1.,04JNEY4MOVBP,OFFSETT4JMPYY4:CMPU)5JNEY5MOVBP.OFFSETT5JMPYY5:CMPA1.,06JNEY6MOVBP1OFFSEtT6JMPYY6:MOVBHO卜FSETT7Y:MOVDX1OEICH:聘星期儿显示在屏幕上MOVCX.23MOVBX,(X)3CHMOVAX.I3HINTIOHNT:movBroffsetmakerMOVDX.i1.ICHMOVCX.23MOVBX.003CH;显示本程序的制作人员MOVAX,13(X)11INTIOHMovBroffsetspaceMOVDX,OC1CHMOVCX.23MOVBX.(X)3CHMOVAX,I300HINTIOHMOVBRoFFSETSPACEMOVDX.IOICHMOVCX.23MOVBX,(X)3CHMVAX,I300HINTIOHJMPYUMOVAH.4CHINT21HASCPROCNEAR;时间数值转换成ASC1.I码字符了程序PUSHBXCBWMOVB1.1()DIVB1.ADDA1.JO'MOVDBUFFERISI,A1.INCSIDDH.'O'MOVDBUFFERIS1.I,AHINCSIPOPBXR