《汇编实验-屏幕窗口程序.docx》由会员分享,可在线阅读,更多相关《汇编实验-屏幕窗口程序.docx(5页珍藏版)》请在第一文库网上搜索。
1、实验五屏幕窗口程序一、实验的目的与要求(一)实验目的:掌握显示器IO程序设计的方法,掌握宏的相关概念,以及运用方法。(二)实验要求:在屏幕上开出三个窗口,它们的行列坐标如下页图所示,光标首先定位在右窗口最下面一行的行首(15,50),如果从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下左键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示左窗口的内容。当一行字符显示满后,窗口自动向上卷动一行,输入字符继续显示于最低一行,窗口最高一行向上卷动后消失。编写屏幕窗口程序时,要求将一些功能程序段定义成宏指令,如向上卷动、清屏、(
2、5,50)(5,10)(15,70)(15,30)(18,15)(22,65)接受字符并判断、在屏幕上显示字符、光标定位。二、实验正文实验分析:实验思路比较简单,主要是运用BIoS调用,这些查表可得,实验要求要用宏来定义一些基本功能,宏调用比较简单,把一些基本功能编写成宏,能高效率的执行程序,但是宏也存在着一些缺点,在宏调用时,要宏展开,这样会占用一定的空间,所以宏是一种以空间换时间的策略,像一些复杂的操作不宜编写成宏。B1OS1O号调用提供了大量的屏幕、光标显示格式,要注意参数的意义,以便正确的显示结果。三、流程图如下:四、实验结果附录:程序源代码如下:datassegmentcurydb1
3、5curxdb50;光标初始位置Ixdb1O;记录左窗口当前光标位置,初始化为左窗口初始位置Iydb15rxdb50;记录右窗口当前光标位置,初始化为右窗口初始位置rydb15dwxdb15;记录下窗口当前光标位置,初始化为下窗口初始位置dwydb22u1rowdb0u1co1db0IrrowdbOIrco1dbOwindownumdb1datasends/宏指令c1ear清屏c1earmacroa,b,c,dmova1,O;初始化窗口movbh,7;卷入行属性movch,a;左上角行号movc1,b;左上角列号movdh,c;右下角行号movd1,d;右下角列号movah,6intIOh;B
4、1oS调用,屏幕初始化endm1宏指令scro11向上卷动一行scro11macrocont,u1row,u1co1,IrrowJrcoImova1,cont;上卷行数movbh,70h;卷入行属性movch,u1row;左上角行号movc1,u1co1;左上角列号movdh,Irrow;右下角行号movd1jrco1;右下角列号movah,6intIOh;B1OS调用,上卷endm/宏指令postc光标定位postcmacroy,xmovbh,0;页号movdh,y;行movd1,x洌movah,2intIOh;B1OS调用,置光标位置endm;在当前窗口和下窗口显示disp1aymacro
5、movbh,0movcx,1movah,OahintIOhpostcdwdwxmovbh,0movcx,1movah,OahintIOhendmgetcharmacroinput:movah,0int16hcmpah,4bhjnzno_1eftpostc1y,1xmovwindownum,2jmpinputnojeft:cmpah,4dhjnzno_rightpostcry,rxmovwindownum,1jmpinputno_right:cmpah,O1jzexitdisp1ayincdwxcmpdwx,65j1eisrightscro111,19,15,22,65movdwx,15isri
6、ght:cmpwindownum,1jnzdisp1eftdispright:incrxcmprx,70;在当前的窗口打印字符;在下窗口输出接收字符并判断;输入键盘上的字符;BIOS调用,从键盘读字符;判断输入字符是否为左向键;判断输入字符是否为右向键;判断输入字符是否为ESC;嵌套调用;判断下窗口是否上卷;判断是否在右窗口;判断右窗口是否上卷j1erightexitscro111,6,50,15,70movrx,50rightexit:;右窗口输出postcry,rxjmpinputdisp1eft:;判断左窗口是否上卷incIxcmp1x,30j1e1eftexitscro111,6,10
7、,15,30mov1x,101eftexit:;左窗口输出postc1y,1xjmpinputexit:endmcodessegmentassumecs:codes,ds:datasstart:mainprocfarpushdssubax,axpushaxmovax,datasmovds,axc1ear0,0,24,79scro1110,5,10,15,30scro1110,5,50,15,70scro114,18,15,22,65postccury,curxgetcharretmainendpcodesendsendstart五、实验总结通过这次实验,掌握了屏幕窗口程序的基本设计方法,领略了宏的设计和使用方法,实验的整体思路比较简单,但如若想编出复杂的屏幕程序,需要对B1OS调用有一个大致的了解,只有这样才能灵活的去运用,这也就启迪我多去阅读和积累相关的知识,只有知识积累到一定程度才能编出好的程序。