当前位置:新励学网 > 秒知问答 > 电脑键盘输入内容只显示右下角字符怎么办

电脑键盘输入内容只显示右下角字符怎么办

发表时间:2024-07-30 08:33:05 来源:网友投稿

刚好以前写过一个显示系统,不过用的是较早的电脑,但对输入和显示的原理还可以作解释的。

首先明确大的步骤,分三步:从键盘向主机传输信号,主机进行处理,主机把处理好的信号间接输出到显示器。

第一步没问题。

第二步看情况。

第三步有些变化。下面一一描述。

第三步的变化在于,显示器的模式有两种,文本模式和图像模式。声明一下以下内容只针对老的电脑。键盘按下或放开时,传入主机的是键位信号,会触发操作系统的键盘处理中断,中断服务程序把键位信号解释成按键的情况,比如按下的是abc,还是大写的ABC,或者是多个键同时按下,比如组合键,或者是键盘的放开。

一般的文字输入就会放内存中的缓存区,等待用户程序的读取。下面只假设输入的是要显示的abc。用户程序向操作系统请求读取输入字母(或者操作系统向用户程序发送字母,哪种方式要看操作系统类型),读出/获取字母abc的ascii码,用户程序向界面输出abc的ascii码。

注意操作系统有显示服务程序,用户只要把abc的ascii码给它就行了。显示服务程序怎么做呢?它负责定位,显示设置等。

先假设当前显示模式是最简单的文本模式,标准的是25行80列,每一格为16x8点阵。

这种模式也就是刚开机时的显示模式,或者是bios设置界面的显示模式。操作系统的显示服务程序,就是要把你的abc显示到当前位置,步骤和原理如下。首先要解释一下原理,老式显示方式,是把显存映射到内存地址的,比如地址范围ff000000到ff7fffff的内存代表显存(注意,这个地址是我乱写的,意思一下,后面的地址都是乱写的,只是作为解释的例子),其中文本模式的缓存需要一个屏幕的字符数,大概是80x25=2000个字符,ff000000到ff001a00的地址存放这2000个字符(再次说明,地址乱写的),其中两个字节对应一个ascii码,低字节存放97(a的ascii码值),高字节存放属性值,比如01代表红色字,02代表蓝色字;

21代表兰低白字,还有代表反色的,等等(属性值也是乱编的,意思明白就行)。

每个内存地址对应屏幕的某个位置,有规律可以计算。

当操作系统的文本输出服务程序把abc的ascii码写入显示地址后,由于是共用地址,其实已经写到了显示装备上了,比如显卡。

接着是显示器的事情了。显示装备不断扫描显示存储区,遇到了97,就是a了,它会去读字模,也就是a字的点阵,控制系统会根据字符属性和字模点阵控制显示装置显示出文字(不同种类的显示器显示方式也不同,液晶、显像管等),如果是显像管,主机在写入字符时,还要调用小段汇编程序,等待扫描同步,读取的是一个显示设备的状态寄存器。

后来显示设备的字模是可以被批量替换的,你可以把自己设计的字模整批替换到里面去,这样可以在文本状态显示出缤纷图案,就像开机一瞬间出现的显卡商标,当然由于只包含了ascii码表的字符量,数量有限,不可能出现2000个不同字符。

再一个制约就是8以字符为单位的,分辨率是80x25的色块而已,但有些人发现,好像不是色块啊,比如有曲线,那是把曲线分割成不同字模拼凑起来的,就像html5以前的网页上的圆角一样,用gif拼凑的。

另外还有寄存器是控制分页的,可以把不同的内存块作为当前显示内容。好了那么其他显示模式呢?比如win桌面,那是图像(图形)模式,以点为单位,对应显示内存的地址。

单色1bit对应一个像素,16色就是4bit对应一个像素了;

24位真彩色;

32位彩色,自己算去。只要算出当前位置对应的内存地址,直接把字符点阵写入相应的地址就行了。最初的中文dos系统就是把模式调用服务程序给改了,把文本模式改为了图形模式,显示用的字模全由CPU处理,字模开始是存在磁盘上的,运算量大增,显示速度慢。现在也一样字模有操作系统提供。当然现在显卡的功能大增,什么的驱动,渲染;

3d,没有专业接触根本不可能知道细节,我也只用过其中的高性能计算,不显示的哪种。以上仅是比较原始较早的简单过程,高级电脑肯定有所变化,注意甄别机制。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!