中断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 屏幕中的页码是什么意思?
最佳答案
我现在无法访问测试工具 -- 事实上,您在 DOS 上的实模式汇编中到底在做什么? -- 但根据内存,这些应该是你的答案:
While coding in DOS what is meant by Scroll up / Scroll down ?
“向上滚动”将是“将屏幕上的所有内容向上移动”。 AL 中的值由多少决定。例如,当 AL=2 时,“向上滚动”会将屏幕上的所有文本向上移动两行。
“向下滚动”会将其向另一个方向移动。
您可以通过适当设置 CX 和 DX 来移动屏幕的任意部分/窗口。例如,由于屏幕大概有 80x25 个字符,当 CH=1、CL=1、DH=23、DL=78 时,将移动的部分将是整个屏幕,除了每个边缘的一个字符的边框。
作为一种特殊情况,AL=0 会导致整个窗口被清空。
why does it says that BH is used to write blank lines at the bottom of the window ?
它说 BH 是写空白行时使用的属性。在文本模式下,偶数地址保存要显示的字符,而奇数地址保存用于显示的属性。 BH会为这个调用写入的每个新字符赋予属性。
属性主要是角色的前景色和背景色。通过设置背景颜色和清屏,可以有效地用一种颜色填充屏幕。
我想澄清一点关于硬件寄存器的问题。你说
but when i am using this code, and not defining the value of BH
请注意,BH 始终有一个值!您只是偶然地使用了周围的那个。请将 BH 设置为您需要的任何值。例如 0x07 表示黑色上的正常白色。
what is meant by a page number in a normal DOS screen ?
类似于现代图形编程中的多个屏幕缓冲区(front buffer,back buffer)。您可以通过使用 AH=05 调用 int 10h
来切换页面。参见 Ralf Brown's Interrupt list .
关于video - 中断 10h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337827/