华北水利水电大学华北水利水电大学课程设计说明书2014——2015学年第二学期学院:电力学院专业:自动化姓名:郭**学号:2012*****2015年7月3日华北水利水电大学1目录一、要求..................................................2二、分析..................................................21)BIOS中断调用......................................22)图形设计...........................................23)颜色显示三、软件设计..............................................21)设计详细的程序流程.................................32)根据流程图,编写源程序.............................33)上机调试源程序.....................................7四、课程设计总结..........................................91)设计的特点........................................102)设计的不足........................................103)上机调试源程序....................................10华北水利水电大学2屏幕显示图形的设计一、要求1)利用80x86汇编语言BIOS中断调用的方法,通过‘*’字符设计自己的名字及学号,并在显示器上用6种以上的颜色显示出来;2)动态切换姓名与学号;3)可自行设计显示姓名及学号的方案。二、分析1)BIOS中断调用BIOS常驻ROM,独立于DOS,可与任何操作系统一起工作。它的主要功能是驱动系统所配置的外部设备,如磁盘驱动器、显示器、打印机及异步通讯接口等。通过INT10H~INT1AH向用户提供服务程序的入口,使用户无需对硬件有深入了解,就可完成对I/O设备的控制与操作。BIOS的中断调用与DOS功能调用类似。2)图形设计掌握BIOS中断调用INT10H的13H号功能。注意13H号功能入口参数的要求。3)颜色显示在彩色显示屏幕上每个字符在存储中用两个字节表示。一个字节保存字符的ASCII码,另一个字节保存字符的属性。BIOS中断调用INT10H的13H号功能是显示字符串,字符的属性在BL中。三、软件设计华北水利水电大学31)设计详细的程序流程图程序设有一个主页面,通过主页面可以调用两个子程序,通过子程序来显示所要显示的程序,故所化程序流程图如下:NYNYNYY2)根据流程图,编写源程序ROW=4;常量定义,显示信息的行号COLUM=00;显示信息的列号ESCKEY=1BH;ESC键的ASCII码值DSEGSEGMENT开始定义初始化显示菜单显示名字子程序自动显示名字学号显示学号子程序ESC?Y?ANYKEY?T?结束华北水利水电大学4MENUDB0DH,0AH,'---------------COMTENT--------------',0DH,0AH;显示信息,菜单0DH,和0AH是回车换行的意思DB0DH,0AH,'1.SHOWTHE[NAME],PRESSSHIFT+Y.'DB0DH,0AH,'2.SHOWTHE[NUMBER],PRESSANYKEY.'DB0DH,0AH,'3.SHOWTHE[ZIDONGQIEHUAN],PRESSSHIFT+T.'DB0DH,0AH,'4.TOEXIT,PRESSTHE[ESC+PRESSANYKEY].'N=$-MENUMESS1DB'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO';定义名字字符DB'O!((HuaBeiShuiLiShuiDianDaXue))!O'DB'O!**!O'DB'O!******************!O'DB'O!******************!O'DB'O!**********!O'DB'O!***************!O'DB'O!***********!O'DB'O!********************!O'DB'O!************!O'DB'O!****************!O'DB'O!*******!O'DB'O!**************!O'DB'O!*****!O'DB'O!*****!O'DB'O!****!O'DB'O!******!O'DB'O!*****!O'DB'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO*OOOOOOOOOOOOOOO'MESS_LEN1=$-OFFSETMESS1;取名字字符的长度MESS2DB'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO';定义学号字符DB'O!ooooooooooooooooooHHoooooooooHHHHooooooooooooooooooooooooooo!O'DB'O!HHHHHHHHHHHHHHHHHHHH!O'DB'O!HHHHHHHHHHHHHHHHHHHH!O'DB'O!oooooooHHHHHHHHoooooooHHHHHHoooooooHHoooooooHHoooooooHH!O'DB'O!HHHHHHHHHHHHHHHHHHHH!O'DB'O!HHHHHHHHHHHHHHHHHHHH!O'DB'O!HHoooooooHHoooooHHHHHHoooooooHHHHHHoooooooHHooooooooooooooHH!O'DB'OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO'MESS_LEN2=$-OFFSETMESS2;取学号字符的长度华北水利水电大学5COLORBDB40H,20H,10H,50H,84H,8EH,82H,81H,85H,04H,0EH,02H,01H,05H,0F4H,0FEH,0F2H,0F1H,0F5H,41H,21H,51H,94H,9EH,92H,95H;颜色属性COLORELABELBYTEDSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:DSEGSTART:MOVDI,OFFSETCOLORB-1;预置颜色指向MOVAX,DSEGMOVDS,AX;设置数据段初值MOVES,AX;ES指向数据段LEABP,MENU;显示提示菜单(把MENU的偏移地址送到BP,BP为int10下要显示字符串的地址)MOVAH,13H;显示字符串MOVAL,01;光标跟随移动MOVCX,N;字符串长度MOVBL,0BH;菜单颜色MOVBH,0;显示页码MOVDX,0;起始行列INT10H;显示器功能调NEXTC:INCDI;调整颜色指针,改变颜色CMPDI,OFFSETCOLORE;是否超过指定的颜色JNZNEXTE;没有超过则跳转MOVDI,OFFSETCOLORB;超过则重新指定为第一种颜色NEXTE:MOVBL,[DI];去颜色MOVAH,0;读取键盘子程序INT16H;从键盘读字符CMPAL,'Y';是否为YJZC1;调用子程序1CMPAL,'T';是否为TJZC3;调用子程序3CMPAL,1BH;退出JZOVER1JMPC2;调用子程序2C1:CALLECH1JMPNEXTCOVER1:MOVAX,4C00HINT21HC2:CALLECH2JMPNEXTCMOVAX,4C00HINT21HC3:CALLECH1CALLDELAY1华北水利水电大学6CALLECH2JMPNEXTCMOVAX,4C00HINT21HECH1PROCNEAR;子程序1,显示MESS1MOVSI,OFFSETMESS1MOVCX,MESS_LEN1MOVDH,ROWMOVDL,COLUMCALLCLSCALLECHOACALLDELAYRETECH1ENDPECH2PROCNEAR;子程序2,显示MESS2MOVSI,OFFSETMESS2MOVCX,MESS_LEN2MOVDH,ROWMOVDL,COLUMCALLCLSCALLECHOARETECH2ENDPECHOAPROCNEARJCXZECHO2MOVBH,0MOVAH,2INT10HMOVAL,20H;空格的ASCII码MOVAH,9INT10H;用指定属性写一空格MOVAH,0EHECHO1:MOVAL,[SI]INCSIINT10H;逐个显示字符CALLDELAYLOOPECHO1;循环ECHO2:RETECHOAENDPCLSPROCNEAR;清屏子程序PUSHAXPUSHBXPUSHCXPUSHDX华北水利水电大学7MOVCH,0MOVCL,0MOVDH,25MOVDL,80MOVBH,07MOVAL,0MOVAH,6INT10HPOPDXPOPCXPOPBXPOPAXRETCLSENDPDELAYPROCNEAR;延时PUSHCXPUSHDXMOVDX,10WAIT1:MOVCX,2108WAIT2:LOOPWAIT2DECDXJNZWAIT1POPDXPOPCXRETDELAYENDPDELAY1PROCNEAR;延时PUSHCXPUSHDXMOVDX,100WAIT3:MOVCX,2108WAIT4:LOOPWAIT4DECDXJNZWAIT3POPDXPOPCXRETDELAY1ENDPCSEGENDSENDSTART3)上机调试源程序华北水利水电大学8程序的分析、代码的编写完成后,开始对代码进行编译和调试,我们采用“MasmforWingdors集成实验环境2015”对所编代码进行编译、调试、运行,程序运行结果如下图所示:a.编译目标文件b.生成可执行文件c.运行从键盘输入“Shift+Y”显示姓名华北水利水电大学9从键盘输入任意键显示学号从键盘输入“Shift+T”自动显示姓名姓名完再显示学号运行时总共有26种颜色变化四、课程设计总结华北水利水电大学101)设计的特点在动画程序中,通过行列变化,26种不同组合的颜色属性设置,以一定的速度产生字符,显示出自己的学号、姓名以及字符颜色,通过调用将姓名学号连续显示出来,实现动态的效果,让人在视觉上产生美感。2)设计的不足姓名学号动态显示略显单一,若能再加上姓名学号左右移动、上下翻转,效果更佳。3)体会在这次的课程设计中,通过实践操作,加深了对汇编语言的了解,增强了汇编的使用能力,有了整体的了解和把握。汇编语言虽然是门低级语言,解决问题的难度有限,但是它的与计算机硬件的紧密关系使的它有着独特的优点。汇编语言程序设计的学习和我们所学习的高级语言程序设计有着相通之处:算法是程序设计的灵魂,而计算机的硬件条件又决定了程序设计的环境。因此在实践程序设计的过程中,要坚持软件与硬件相结合的原则,多探究计算机的内部构造及执行和相应程序的原理。