【问题标题】:How to set non-blinking text cursor (assembly)? [closed]如何设置不闪烁的文本光标(程序集)? [关闭]
【发布时间】:2020-02-18 21:31:12
【问题描述】:

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

【问题讨论】:

  • 不是 VGA 硬件。您必须隐藏光标并自己绘制反字符。

标签: assembly tasm emu8086


【解决方案1】:

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 所说,有了所有这些假设,最好隐藏光标并自己绘制。

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

【讨论】:

猜你喜欢
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多