如何设置非闪烁文本光标(组件)? [关闭]

问题描述 投票:0回答:1

我的程序应设置非闪烁文本光标。我只发现了如何隐藏光标(使用10h)。光标应可见但不闪烁。有可能吗?

assembly tasm emu8086
1个回答
1
投票

VGA使用属性字节的位7指示闪烁。您可以关闭此功能,以便可以使用位7指示强度。

我现在只有一个旧笔记Archive.org,但是我一直在使用一些已经工作了一段时间的代码。

       ; =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       ; 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(而不是Windowed Session)运行,以及许多其他假设。

同样,它必须在TRUE DOS计算机上,或者至少在实际使用VGA硬件而不是模拟VGA的平台上。另外,如果现代硬件甚至不再具有VGA硬件,也不要感到惊讶。

如杰斯特所说,在所有这些假设下,最好隐藏光标并自己绘制。

但是,如果您确实可以使用它,并且应该在标准的老式机器中使用它,则可以使用强度颜色,即:亮白色,亮蓝色等。

© www.soinside.com 2019 - 2024. All rights reserved.