当前位置:网站首页 > 编程语言 > 正文

boos源空白(sileo bigboss源空白)



如何让用户输入的键盘按键转换为对于的字符,只需使用汇编调用bios中断即可实现,我们在naskfuc.nas中编写好的大量in out接口尝试调用,修改后的int.c中inthandler函数:

我们往键盘上按下一个键的时候,键盘外设会向CPU发送一个外中断,并将按键的区位码发送,我们使用io_in8接口接收返回的缓冲区数据,运行:

一键BIOS制作_数据

按下一个按键,比如a:

一键BIOS制作_#define_02

我们暂时让按键对应的编码输出了,以后我们再将键盘编码转换为对应的字符。

我们在bookpack.h头文件中声明一个名为KEYBUF的缓冲区,用于存放更多的字符编码:

修改一下int.c中的inthandler函数,使其能不断的读取键盘码,其中next为数组指针:

bookpack.c中主函数HariMain尾部添加读取缓冲区键盘码代码:

这样当键盘连续输入的时候,会不断的刷新显示的按键编码。

上面缓冲区的设计的弊端就是不能存储大量的数据,每次只能读取一个数据。并且每次读取都需要进行一次一位操作,时间复杂度是O(N),我们尝试设计一个O(1)复杂度的读取操作,并且使它能读取更多的数据,修改后bookpack.h中的KEYBUF结构体:

其中定义的data存放数据,下面的三个指针next_r是数据读取指针,next_w是数据写入指针,len是缓冲区已有数据个数。

修改后int.c的inthandler函数对键盘编码的写入:

bookpack.c的HariMain主函数对数据的读取:

这样就不需要频换的进行移位操作。

我们优化后的缓冲区只能读取32个字节,这样后面用到更多读写操作时又需要频换修改,我们将缓冲区的读写独立为一个fifo.c函数。

修改后的结构体:

新增的fifo.c文件:

此时在bookpack.c的HariMain主函数中:

我们使用make run命令运行,按下键盘上任意键:

一键BIOS制作_数据_03

没有问题。

对鼠标的中断处理跟键盘大致差不多,对于鼠标我们将缓冲区字节大小修改为128字节,修改后的bookpack.c:

这样键盘鼠标的中断我们都处理了,现在尝试运行一下:

一键BIOS制作_数据_04

我们移动一下鼠标:

一键BIOS制作_数据_05

今天的内容大致就这么多。

到此这篇boos源空白(sileo bigboss源空白)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vs多个源文件怎么单独生成(vs2017多个源文件单独运行)2025-04-27 11:09:07
  • 卡巴斯基个人版5设备(卡巴斯基个人版多少钱)2025-04-27 11:09:07
  • polowalk(polowalk中文叫什么牌子)2025-04-27 11:09:07
  • tkdd期刊 letpub(tkdd期刊含金量)2025-04-27 11:09:07
  • sigmoid参数(sigmoid参数量)2025-04-27 11:09:07
  • 比较文件的差异要用到的命令是(比较文件内容的命令有( )和( ))2025-04-27 11:09:07
  • 动态库和静态库的优缺点(动态库和静态库的使用)2025-04-27 11:09:07
  • 动态库和静态库的区别是什么(动态库和静态库的区别是什么呢)2025-04-27 11:09:07
  • ip域名地址查询(ip域名地址查询官网)2025-04-27 11:09:07
  • autoh一直开可以吗(auto hold可以一直开着吗?)2025-04-27 11:09:07
  • 全屏图片