微机原理课设总汇编语言动态显示姓名学号.docx
《微机原理课设总汇编语言动态显示姓名学号.docx》由会员分享,可在线阅读,更多相关《微机原理课设总汇编语言动态显示姓名学号.docx(8页珍藏版)》请在冰豆网上搜索。
微机原理课设总汇编语言动态显示姓名学号
华北水利水电学院
课程设计说明书
环节名称:
微机原理与接口技术
系别专业:
电力学院自动化专业
学号:
200808109
姓名:
pickerup
指导教师:
王
屏幕显示图形的程序设计要求
一、要求
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中。
属性设置方法见教材第四章164页。
三、软件设计
1)设计详细的程序流程图;
2)根据流程图,编写源程序;
3)上机调试源程序。
程序流程图
程序执行图:
图1.菜单提示界面
图2.输入一般字符时(非Esc、非Y)的显示画面
图3.输入Y后,显示的画面
ROW=8
COLUM=00
ESCKEY=1BH
DSEGSEGMENT
MENUDB0DH,0AH,'---------------COMTENT------------------------',0DH,0AH
DB0DH,0AH,'1.SHOWTHE[2008],PRESS"Y".'
DB0DH,0AH,'2.SHOWTHE[NUMBER],PRESSANYKEY!
'
DB0DH,0AH,'3.TOEXIT,PRESSTHE[ESC].'
N=$-MENU
MESS1DB'+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+',0DH,0AH
DB'||D||111111111111111111111111111111111111||D||',0DH,0AH
DB'||L||11111111111111111111111111111111||L||',0DH,0AH
DB'||X||111111111111111111111111111111111111||X||',0DH,0AH
DB'||Y||11111111111111111111111111111111111111||Y||',0DH,0AH
DB'||Z||11111111111111111111111111111111||Z||',0DH,0AH
DB'||D||11111111111111111111111111111111111111||D||',0DH,0AH
DB'||H||11111111111111111111111111111111||H||',0DH,0AH
DB'||Z||11111111111111111111111111111111||Z||',0DH,0AH
DB'||Y||1111111111111111111111111111111111111111||Y||',0DH,0AH
DB'+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+',0DH,0AH
MESS_LEN1=$-OFFSETMESS1
MESS2DB'+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|',0DH,0AH
DB'+OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+',0DH,0AH
MESS_LEN2=$-OFFSETMESS2
COLORBDB4AH,3AH,14H,52H,4FH,74H,2EH,59H,6FH,6DH,20H
COLORELABELBYTE
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,ES:
DSEG
START:
MOVDI,OFFSETCOLORB-1;预置颜色指向
MOVAX,DSEG
MOVDS,AX
MOVES,AX
LEABP,MENU;显示提示菜单
MOVAH,13H
MOVAL,01
MOVCX,N
MOVBL,0BH
MOVBH,0
MOVDX,0
INT10H
NEXTC:
INCDI;改变颜色
CMPDI,OFFSETCOLORE
JNZNEXTE
MOVDI,OFFSETCOLORB
NEXTE:
MOVBL,[DI]
MOVDH,ROW
MOVDL,COLUM
MOVAH,0;选择要显示的字符
INT16H
CMPAL,'Y'
JZC1
CMPAL,1BH;退出
JZOVER1
JMPC2
C1:
CALLECHO1
JMPNEXTC
OVER1:
MOVAX,4C00H
INT21H
C2:
CALLECHO2
JMPNEXTC
MOVAX,4C00H
INT21H
ECHO1PROCNEAR;子程序1,显示MESS1
MOVSI,OFFSETMESS1
MOVCX,MESS_LEN1
PUSHES
PUSHBP
PUSHDS
POPES
MOVBP,SI
MOVBH,0
MOVAL,0
CALLCLRS
MOVAH,13H
INT10H
POPBP
POPES
CALLDELAY
RET
ECHO1ENDP
ECHO2PROCNEAR;子程序2,显示MESS2
MOVSI,OFFSETMESS2
MOVCX,MESS_LEN2
PUSHES
PUSHBP
PUSHDS
POPES
MOVBP,SI
MOVBH,0
MOVAL,0
CALLCLRS
MOVAH,13H
INT10H
POPBP
POPES
CALLDELAY
RET
ECHO2ENDP
CLRSPROCNEAR;清屏子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,0
MOVCH,0
MOVCL,0
MOVDH,24
MOVDL,79
MOVBH,7
INT10H
POPDX
POPCX
POPBX
POPAX
RET
CLRSENDP
DELAYPROCNEAR;延时
PUSHCX
PUSHDX
MOVDX,57138
WAIT1:
MOVCX,4435
WAIT2:
LOOPWAIT2
DECDX
JNZWAIT1
POPDX
POPCX
RET
DELAYENDP
CSEGENDS
ENDSTART