资源描述:
《山东大学汇编实验三实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验三DOS和BIOS中断功能调用•、实验口的1.掌握DOS系统提供的DOS和BIOS功能调用方法。2.巩固汇编语言程序编写方法。二、实验任务1.在屏幕上建立一个10行20列的小窗口,先清窗口,然后在窗口的授后一行行首输入字符串“Youarewelcome!",向上滚一行,重复此过程,直到整个窗口显示完毕。程序代码:.modelsmal1.stack.codeEsc_keyequlbh;退出程序win_ulcequ30;屏幕左上角的列数win_ulrequ8;屏幕左上角的行数win_lrcequ50;屏幕右下角的列数win_lrrequ17;屏幕右
2、下角的行数mainprocfarmovah,6;清屏功能moval,0movbh,7movch,0movcl,0movdh,24movdl,79intlOhmovdx,0;光标设置功能movah,2intlOhlocate:movah,2;将光标设为最下血一行的左端movdh,win_lrrmovdl,win_ulcmovbh,0intlOhmovex,16d;循环15次输入时上滚get_char:;输入字符movah,1;当输入"youarewelcome!”时,即15个字符时上滚int21hcmpal,Esc_key;输入esc时退出程序jze
3、xitloopget_charmovah,6;屏幕上港功能moval,1movch,win_ulrmovcl,winulcmovdh,winlrrmovdl,win_lrcmovbh,7intlOhjmplocateexit:;退出程序movax,4c00hint21hmainendpendmain程序运行截图:C:>cdmasnC:jnasn>n»asn»6.asmMicrosoftMacroAssemblerUersion5.00CopyrightMicrosoftCorp1981-1985,1987・Allrightsrese
4、rved.Objectfilename[6.OBJ]:Sourcelisting[NUL.LST]:Cross-reference[NUL.CRF]:50564+415356Bytessymbolspacefree0WarningErrors0SevereErrorsC:asn>link6MicrosoftOverlayLinkerUersion3.60CopyrightMicrosoftCorp1983-1987.Allrightsreserved.BunFile[6.EXEJ:ListFile[NUL.MAPJ:Librarie
5、s[.LIBJ:C:jnasn>6.exe1.完成DOS系统time命令功能,先将当前时间(时值:分值)显示出來,再提示输入更改的时间(时值:分值),并完成新时间的设置。程序代码:CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG100H9BEGTN:JMPSTARTT1MESTRHOURMTNDB'00:00','$'DBOOHDBOOHNOW_STRINPUT_STRDBODH,OAH,5Currenttimeis','DBODH,OAH,'Enternewtime(hh:mm):ERRMSGOKMSGDB
6、ODH,OAH,'Cannotsetnewtime.','DBODH,OAH,'OK.','NEW_LINEDBODH,OAH,'$'9;主程序开始START:MOVAX,CSMOVDS,AX;设置DS与CS相同。(数据段与代码段相同)CALLGET_T1ME_TO_BUFECALLNUM_TO_STR;取系统时间到HOUR和MIN;转换数值HOIK和MIN到ASCII码形式TIMESTRoCALLDTSP_TTME_STR;显示当前时间TIMESTRoCALLINPUT_TTME_STR;接收键盘输入新的时间到HOUR和MINoCALLSTR_T
7、O_NUM;转换人$门1码形式TIMESTR到数值CALLSET_TIME;CALLGET_TTME_TO_BUFF;按HOUR和MIN设置系统时间。码形式TIMESTRo:CALLNUM_TO_STR;CALLDISP_TIME_STR;转换数值HOUR和MTN到ASCII;主程序至此结朿MOVAH,4cHINT21H;带返回码终止,A1尸返回码9GET_TIME_TO_BUFFPROCNEAR;取系统时间到HOUR和MINMOVAH,2CHTNT21HMOVBX,OFFSETHOURMOV[BX],CHMOVBX,OFFSETMINMOV[BX
8、],CLRET;转换数值HOUR和MIN到ASCII码;小时的十位;小时的个位GET_TIME_TO_BUFFENDPNU