屏幕上的光标

光标(Cursor)是在屏幕上有规律地闪动的一条小横线,通常用于指示下一个要显示的字符位置。

光标在屏幕上的位置保存在显卡内部的两个光标寄存器中,每个寄存器是
8 位,和起来形成一个 16 位的数值。比如,0 表示光标在屏幕上第 0 行第 0 列,80 表示它在第 1 行第 0 列(因为标准 VGA 文本模式是 25 行,每行 80 个字符。所以,当光标在屏幕右下角时,该值为 25*80-1=1999。)

光标寄存器是可读写的,即可以通过程序来设置光标位置。

获取当前光标位置

显卡中很多寄存器只能通过索引寄存器间接访问。索引寄存器的端口号是0x03d4。通过给索引寄存器写入索引值读取对应的显卡内部寄存器的值。

两个 8 位光标寄存器,索引值分别是 14(0x0e)和 15(0x0f),分别存储光标位置的高 8 位和低 8 位。

指定了索引寄存器的值之后,通过数据端口0x03d5读取数据。

参考

  1. 《x86汇编语言:从实模式到保护模式》 —— 李忠

你可能感兴趣的:(屏幕上的光标)