有很多服务可以用于中断10h, 我想问一下这个问题,其中有两个人我很困惑
首先是,
AH = 06H SCROLL UP WINDOW
AH = 07H SCROLL DOWN WINDOW
在DOS中编码时,向上滚动/向下滚动是什么意思?
看看这个,
; AL = NUMBER OF LINES BY WHICH TO SCROLL UP (00H = CLEAR ENTIRE WINDOW)
; BH = ATTRIBUTE USED TO WRITE BLANK LINES AT BOTTOM OF WINDOW
; CH,CL = ROW,COLUMN OF WINDOW'S UPPER LEFT CORNER
; DH,DL = ROW,COLUMN OF WINDOW'S LOWER RIGHT CORNER
这里说BH用于在窗口底部写入空白行, 但是当我使用这段代码时,
MOV AH, 06H
MOV AL, 00H
MOV CX, 00H
MOV DH, 25
MOV DL, 80
INT 10H
并没有定义BH的值,我的结果将不会显示在屏幕上,只要我声明Bh的值,它实际上是控制DOS屏幕的前景色和背景色。 那么为什么它会用BH在窗口底部写下空行?
第二是,
;AH = 02 USED To SET CURSOR POSITION
;BH = PAGE NUMBER
;CH,CL = ROW,COLUMN OF WINDOW'S UPPER LEFT CORNER
;DH,DL = ROW,COLUMN OF WINDOW'S LOWER RIGHT CORNER
这里BH等于页码:confused:?普通DOS屏幕中的页码是什么意思?
答案 0 :(得分:8)
我现在无权使用工具进行测试 - 事实上,你在DOS上的实模式组装中做了什么? - 但是从记忆中,这些应该是你的答案:
在DOS中编码时,向上滚动/向下滚动是什么意思?
“向上滚动”将“获取屏幕上的所有内容并将其向上移动”。 AL中的值决定了多少。例如,当AL = 2时,“向上滚动”会将屏幕上的所有文本移动两行。
“向下滚动”会将其向另一个方向移动。
您可以通过适当设置CX和DX来移动屏幕的任意窗口/窗口。例如,由于屏幕大概有80x25个字符,当CH = 1,CL = 1,DH = 23,DL = 78时,除了沿每个边缘的一个字符的边界外,将被移动的部分将是整个屏幕。 / p>
作为一种特殊情况,AL = 0将导致整个窗口被清除。
为什么说用BH在窗口底部写空行?
它表示BH是写空行时使用的属性。在文本模式下,偶数地址保存要显示的字符,而奇数地址保存用于显示的属性。 BH将为此调用所写的每个新字符赋予属性。
属性主要是角色的前景色和背景色。通过设置背景颜色并清除屏幕,您可以用一种颜色有效地填充屏幕。
我想澄清一下有关硬件寄存器的观点。你说
但当我使用此代码时,并没有定义BH的值
请注意BH总是有价值的!你只是偶然使用那个躺着的人。请将BH设置为您需要的任何东西。例如,对于黑色的正常白色,为0x07。
普通DOS屏幕中的页码是什么意思?
它类似于现代图形编程中的多屏幕缓冲区(前缓冲区,后缓冲区)。您可以通过调用AH = 05的int 10h
来切换页面。请参阅Ralf Brown's Interrupt list。