ITEEDU

        code  segment
              assume    cs:code,ds:code
              org       100h
        main  proc      far
              jmp       short start
         msg  db        'Press any key...',0dh,24h
      start:  mov       ah,09h	;显示字符串MSG
              mov       dx,offset msg
              int       21h
			
              mov       cx,25	;设置循环计数
      loop1:
              push      cx	;暂存CX寄存器中的循环计数
              mov       cx,0	;设置滚动窗口的左上角为(0,0)
              mov       dx,194fh	;设置滚动窗口的右下角为(79,25)
              mov       bh,2	;设置新行的属性
              mov       ah,6	;选择10H中断的06功能
              mov       al,1	;准备将窗口中的内容向上滚动1行
              int       10h	;滚动窗口内容
			
              mov       ah,0	;等待键盘输入
              int       16h
			
              pop       cx	;恢复CX寄存器中的循环计数
              loop      loop1	;继续滚动窗口
			
              int       20h	;结束进程
        main  endp
        code  ends
              end       main

运行这个程序,刚刚设想的第(1)、(3)点都可得到验证。下面这个程序使用了07H功能,而且可以验证我们设想的第(2)点:

        code  segment
              assume    cs:code,ds:code
              org       100h
        main  proc      far
              jmp       short start	;跳过数据区
         msg  db        'Press any key...',0dh,24h
      start:  mov       ah,09h	;显示字符串MSG
              mov       dx,offset msg
              int       21h
			
              mov       bl,4	;设置循环计数
      loop1:
              mov       ah,0	;等待键盘输入
              int       16h
			
              mov       cx,0	;设置窗口的左上角为(0,0)
              mov       dx,194fh	;设置窗口的右下角为(79,25)
              mov       bh,2	;设置插入行的属性
              mov       al,bl	;以循环计数作为滚动的行数
              mov       ah,7	;选择10H中断的07功能
              int       10h	;向下滚动窗口
              dec       bl	;循环计数减1
              jns       loop1	;循环至LOOP1继续
			
              int       20h	;结束进程
        main  endp
        code  ends
              end       main

在这个程序中“等待键盘输入”的位置做了些调整,运行这个程序时可以清楚的看到屏幕自上而下滚动4、3、2、1行的情况,以及AL寄存器清零后整屏被清除。如果要验证清窗口的功能,只需稍稍修改一下窗口的左上与右下角坐标即可。其实原来提出的在屏幕上显示空格的方法也能完成诸如清"窗口",改变新行属性等功能,只是编程不如新讨论的两个功能简便而已。