【发布时间】:2020-02-18 21:31:12
【问题描述】:
我的程序应该设置不闪烁的文本光标。我只找到了如何隐藏光标(使用 10h)。 光标应该可见但不闪烁。有可能吗?
【问题讨论】:
-
不是 VGA 硬件。您必须隐藏光标并自己绘制反字符。
我的程序应该设置不闪烁的文本光标。我只找到了如何隐藏光标(使用 10h)。 光标应该可见但不闪烁。有可能吗?
【问题讨论】:
VGA 使用属性字节的第 7 位来指示闪烁。您可以关闭此功能,以便使用位 7 来指示强度。
我的旧笔记现在只有Archive.org'ed,但我一直在使用一些已经工作了一段时间的代码。
; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; make sure the 'blink' bit is off
; this is so we can print bright colors instead of the
; vga using bit 7 as the blink bit.
mov dx,3DAh ; reset the flip-flop
in al,dx
mov dx,3C0h ; index 0x10 (20h + 10h)?
mov al,30h
out dx,al
inc dx ; clear bit 3 to disable blink
in al,dx
and al,(~(1<<3))
dec dx
out dx,al
请注意,这是假设有一个标准 VGA,这些特定寄存器位于 0x3DA、0x3C0 和 0x3C1,这将在 TRUE DOS 下运行——而不是窗口会话,以及许多其他假设。
同样,这必须在 TRUE DOS 机器上,或者至少在实际使用 VGA 硬件而不是模拟它的平台上。此外,如果现代硬件甚至没有 VGA 硬件,请不要感到惊讶。
正如 Jester 所说,有了所有这些假设,最好隐藏光标并自己绘制。
但是,如果您确实可以使用它,并且它应该在标准的老式机器中使用,它允许您使用强度颜色,即:亮白色、亮蓝色等。
【讨论】: