![]() | 第6章 文字输出与键盘输入 | -133- | |||||||||||||||||||
09F9:0100 09F9:0103 09F9:0105 09F9:0107 09F9:0109 09F9:010C 09F9:010E 09F9:0110 09F9:0112 09F9:0114 09F9:0116 09F9:0119 09F9:011B |
BA0000 B700 B402 CD10 B98000 B020 B307 B409 CD10 FEC6 80FE19 72E8 CD20 |
MOV MOV MOV INT MOV MOV MOV MOV INT INC CMP JB INT |
DX,0000 BH,00 AH,02 10 CX,0080 AL,20 BL,07 AH,09 10 DH DH,19 0103 20 |
;设置新的光标位置 ;BH寄存器装入显示页号 ;利用10H中断的02功能 ;设置光标位置 ;显示80个字符 ;准备显示空格 ;显示黑底白字正常属性 ;利用10H中断的09功能 ;显示空格 ;光标行号加1 ;已经到屏幕底部了吗? ;未到屏幕底部,转0103继续 ;结束程序 |
|||||||||||||||||
好象问题就这么简单,难道只有这一种方法吗?下面我们就要来学习新的解决办法。 大家对于屏幕的"滚动"并不陌生,我们所面对的屏幕只能显示25行文字,如果显示的文字多于25行,那么位于屏幕最顶端的字符就会滚到屏幕外面。其实屏幕的上下滚动是完全可以用程序控制的,而且我们不仅可以控制整个屏幕的滚动,还能让屏幕上某一部分的内容上下滚动。方法也很简单,只不过是10H中断的两个功能调用而已: |
|||||||||||||||||||||
![]() |
功能号:06H/07H 用 途:窗口内容向上/向下滚动 参 数:AL=要滚动的行数(若是0将清窗口) BH=填入新行的属性 CH=滚动窗口的左上角行号 CL=滚动窗口的左上角列号 DH=滚动窗口的右下角行号 DL=滚动窗口的右下角列号 调 用:INT 10H 返 回:无 |
||||||||||||||||||||
两个功能调用滚动的方向相反,如果我们从给出的这两个功能调用的参数上加以分析,我们可以大概推测出这两个功能调用所能完成的工作: (1)用这两个功能调用既可以滚动屏幕上的一个窗口,也可以滚动整个屏幕,只需将窗口的左上角定为(0,0),将右下角定为(79,25); (2)滚动的行数可以任意(由AL寄存器决定); (3)在清除后的屏幕上显示文字会产生色彩,而不仅仅是单纯的黑色(由BH寄存器决定)。 这只是简单的设想,能否实现还要靠编程验证。让我们编写下列程序: |
|||||||||||||||||||||
code |
segment assume org |
cs:code,ds:code 100h |
|||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |