您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 汇编实验-屏幕窗口程序
实验五屏幕窗口程序一、实验的目的与要求(一)实验目的:掌握显示器IO程序设计的方法,掌握宏的相关概念,以及运用方法。(二)实验要求:在屏幕上开出三个窗口,它们的行列坐标如下页图所示,光标首先定位在右窗口最下面一行的行首(15,50),如果从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下左键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示左窗口的内容。当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示于最低一行,窗口最高一行向上卷动后消失。编写屏幕窗口程序时,要求将一些功能程序段定义成宏指令,如向上卷动、清屏、接受字符并判断、在屏幕上显示字符、光标定位。二、实验正文实验分析:实验思路比较简单,主要是运用BIOS调用,这些查表可得,实验要求要用宏来定义一些基本功能,宏调用比较简单,把一些基本功能编写成宏,能高效率的执行程序,但是宏也存在着一些缺点,在宏调用时,要宏展开,这样会占用一定的空间,所以宏是一种以空间换时间的策略,像一些复杂的操作不宜编写成宏。BIOS10号调用提供了大量的屏幕、光标显示格式,要注意参数的意义,以便正确的显示结果。三、流程图如下:(5,10)(15,30)(5,50)(15,70)(18,15)(22,65)四、实验结果附录:程序源代码如下:;****************************************************************datassegmentcurydb15;光标初始位置curxdb50lxdb10;记录左窗口当前光标位置,初始化为左窗口初始位置lydb15rxdb50;记录右窗口当前光标位置,初始化为右窗口初始位置rydb15dwxdb15;记录下窗口当前光标位置,初始化为下窗口初始位置dwydb22ulrowdb0ulcoldb0lrrowdb0lrcoldb0windownumdb1datasends;-----------------------------------------------------------------宏指令clear清屏clearmacroa,b,c,dmoval,0;初始化窗口movbh,7;卷入行属性movch,a;左上角行号movcl,b;左上角列号movdh,c;右下角行号movdl,d;右下角列号movah,6int10h;BIOS调用,屏幕初始化endm;-------------------------------------------------------------宏指令scroll向上卷动一行scrollmacrocont,ulrow,ulcol,lrrow,lrcolmoval,cont;上卷行数movbh,70h;卷入行属性movch,ulrow;左上角行号movcl,ulcol;左上角列号movdh,lrrow;右下角行号movdl,lrcol;右下角列号movah,6int10h;BIOS调用,上卷endm;--------------------------------------------------------------宏指令postc光标定位postcmacroy,xmovbh,0;页号movdh,y;行movdl,x;列movah,2int10h;BIOS调用,置光标位置endm;---------------------------------------------------------------在当前窗口和下窗口显示displaymacromovbh,0movcx,1movah,0ah;在当前的窗口打印字符int10hpostcdwy,dwxmovbh,0movcx,1movah,0ah;在下窗口输出int10hendm;----------------------------------------------------------------接收字符并判断getcharmacroinput:;输入键盘上的字符movah,0int16h;BIOS调用,从键盘读字符cmpah,4bh;判断输入字符是否为左向键jnzno_leftpostcly,lxmovwindownum,2jmpinputno_left:cmpah,4dhjnzno_right;判断输入字符是否为右向键postcry,rxmovwindownum,1jmpinputno_right:cmpah,01;判断输入字符是否为ESCjzexitdisplay;嵌套调用incdwxcmpdwx,65;判断下窗口是否上卷jleisrightscroll1,19,15,22,65movdwx,15isright:cmpwindownum,1;判断是否在右窗口jnzdispleftdispright:;判断右窗口是否上卷incrxcmprx,70jlerightexitscroll1,6,50,15,70movrx,50rightexit:;右窗口输出postcry,rxjmpinputdispleft:;判断左窗口是否上卷inclxcmplx,30jleleftexitscroll1,6,10,15,30movlx,10leftexit:;左窗口输出postcly,lxjmpinputexit:endm;---------------------------------------------------------------codessegmentassumecs:codes,ds:datasstart:mainprocfarpushdssubax,axpushaxmovax,datasmovds,axclear0,0,24,79scroll10,5,10,15,30scroll10,5,50,15,70scroll4,18,15,22,65postccury,curxgetcharretmainendp;-----------------------------------------------------------------codesends;****************************************************************endstart五、实验总结通过这次实验,掌握了屏幕窗口程序的基本设计方法,领略了宏的设计和使用方法,实验的整体思路比较简单,但如若想编出复杂的屏幕程序,需要对BIOS调用有一个大致的了解,只有这样才能灵活的去运用,这也就启迪我多去阅读和积累相关的知识,只有知识积累到一定程度才能编出好的程序。
本文标题:汇编实验-屏幕窗口程序
链接地址:https://www.777doc.com/doc-7224574 .html