目录 上一页 下一页 下一章

第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

目录 上一页 下一页 下一章