您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 用汇编语言显示系统日期时间
1国家示范性软件学院汇编程序设计与组成原理课程设计姓名:________班级:________学号:________指导老师:________成绩:________评语2一.课程设计的目的及意义通过课程设计,主要达到以下目的:1.使学生增进对汇编语言的认识,加强用汇编语言编程的能力。2.使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。3.使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。(垃,圾,文库,叫你说我文档质量偏低)二.基本内容题目:显示系统当前时间与日期要求设计界面提示信息为:“PleaseinputDATE(D)ORTIME(T)ORQUIT(Q):”,从键盘键入“D”,可显示系统日期。从键盘输入“T”,可显示系统时间。从键盘输入“Q”,退出程序。利用DOS的系统功能调用的2AH和2CH功能调用,读取系统日期和时间。将日期和时间转换为相应的ASCII码字符,显示在屏幕上。(垃,圾,文库,叫你说我文档质量偏低)(垃,圾,文库,叫你说我文档质量偏低)(垃,圾,文库,叫你说我文档质量偏低)三.系统功能结构框图(垃,圾,文库,叫你说我文档质量偏低)(垃,圾,文库,叫你说我文档质量偏低)(垃,圾,文库,叫你说我文档质量偏低)主程序MAIN(显示界面提示信息,根据键盘输入的字符调用各子程序)子程序DATEDISPLAY(调用DOS的2AH功能,取系统当前日期,将日期转换成对应的ASCII码值并显示)子程序TIMEDISPLAY(调用DOS的2CH功能,取系统当前时间,将时间转换成对应的ASCII码值并显示)CALLCALL3四.系统流程框图五.源程序代码;*************清屏宏定义***********CLEAR_SCREENMACRO;宏定义,设置七个参数MOVAH,06H;AH=06屏幕初始化或上卷指定的行MOVAL,00H;清屏INT10H;调用BIOS功能MOVAH,02H;制定光标位置MOVBH,00H;第0页MOVDH,00H;第0行MOVDL,00H;第0列INT10HENDM;*********定义堆栈段********STACKSEGMENTDB200DUP(?)toslabelbyteSTACKENDS;*********定义数据段********DATASEGMENTSTR00DB'|**********Welcome!**********|$';提示界面STR01DB0DH,0AH,'|**|$'STR02DB0DH,0AH,'|*Thisisadisplayprogram.*|$'开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符判断字符显示系统日期显示系统时间提示输入错误结束D(d)T(t)otherQ(q)4STR03DB0DH,0AH,'|*D:displayDate*|$'STR04DB0DH,0AH,'|*T:displayTime*|$'STR05DB0DH,0AH,'|*Q:Quit*|$'STR06DB0DH,0AH,'|**|$'STR07DB0DH,0AH,'|********************************|$'STR08DB0DH,0AH,'Pleaseinputachar:$'INPUTERDB0DH,0AH,'InputError!',0DH,0AH,'$'DATEDISDB'0000-00-00',0AH,'$';显示DATETIMEDISDB'00:00:00',0AH,'$';显示TIMEDATAENDS;*********定义代码段********CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MAINPROCFARMOVAH,00H;AH=0设置显示模式MOVAL,03H;设置80*25图形显示INT10HCLEAR_SCREEN;调用宏定义MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXmovsp,offsettos;*******显示宏定义********;用于显示字符串SHOWMACROstrLEADX,strMOVAH,9INT21HENDMSHOWSTR00SHOWSTR01SHOWSTR02SHOWSTR03SHOWSTR04SHOWSTR05SHOWSTR06SHOWSTR07INPUT:SHOWSTR08;显示输入提示MOVAH,01;键盘输入并回写INT21HCMPAL,D;与D比较5JEPRINT_DATE;相等转PRINT_DATE打印日期CMPAL,dJEPRINT_DATECMPAL,T;与D比较JEPRINT_TIME;相等转PRINT_TIME打印时间CMPAL,tJEPRINT_TIMECMPAL,Q;与Q比较JEEXIT;相等转EXIT退出程序CMPAL,qJEEXITSHOWINPUTER;显示输入错误JMPINPUTPRINT_DATE:CALLDATEDISPLAY;调用日期显示子程序JMPINPUT;继续输入字母PRINT_TIME:CALLTIMEDISPLAY;调用时间显示子程序JMPINPUT;继续输入字母EXIT:;结束,退出程序MOVAH,4CHINT21HMAINENDP;*********日期显示子程序*********DATEDISPLAYPROCNEARMOVAH,2AH;取当前系统日期INT21HMOVAX,CX;送年份入AX作为被除数【年份存在CX中】MOVBX,10;(BX)=10LEASI,DATEDIS+4;使SI指向年的最后一位【从0开始数】MOVCX,4;(CX)=4年的位数,循环4次PUSHDX;DX入栈,保存月日TAB:XORDX,DX;DX清零,存余数DIVBX;(DX,AX)/BX,商送AX,余数送DXADDDL,30H;余数与30H相加变为字符的ASCII码MOV[SI],DL;余数送入SI所指向的字节区DECSI;SI减一LOOPTAB;循环4次POPDX;DX还原MOVAL,DL;日送AL【日存在DL中】XORAH,AH;AH清零DIVBL;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADDAX,3030H;转变为数字字符的ASCII码6LEASI,DATEDIS+9;使SI指向日的十位MOV[SI],AX;(AX)送SI所指向的字节区MOVAL,DH;月送AL【月存在DH中】XORAH,AH;AH清零DIVBL;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADDAX,3030H;转变为数字字符的ASCII码LEASI,DATEDIS+6;使SI指向月的十位MOV[SI],AX;(AX)送SI所指向的字节区SHOWDATEDIS;显示日期RET;调用后返回DATEDISPLAYENDP;*********时间显示子程序*********TIMEDISPLAYPROCNEARMOVAH,2CHINT21HMOVBX,10MOVAL,CH;CH存时XORAH,AHDIVBLADDAX,3030HLEADI,TIMEDIS+1MOV[DI],AXMOVAL,CL;CL存分XORAH,AHDIVBLADDAX,3030HLEADI,TIMEDIS+4MOV[DI],AXMOVAL,DH;DH存秒XORAH,AHDIVBLADDAX,3030HLEADI,TIMEDIS+7MOV[DI],AXSHOWTIMEDISRET;时间调用返回TIMEDISPLAYENDPCODEENDSENDSTART六.使用说明7七.参考文献[1]沈美明、温冬婵,《IBM-PC汇编语言程序设计(第二版)》,清华大学出版社,2010年10月
本文标题:用汇编语言显示系统日期时间
链接地址:https://www.777doc.com/doc-6319114 .html