oracle代码生成器(oracle在哪里写代码)

oracle代码生成器(oracle在哪里写代码)如何让用户输入的键盘按键转换为对于的字符 只需使用汇编调用 bios 中断即可实现 我们在 naskfuc nas 中编写好的大量 in out 接口尝试调用 修改后的 int c 中 inthandler 函数 我们往键盘上按下一个键的时候 键盘外设会向 CPU 发送一个外中断 并将按键的区位码发送 我们使用 io in8 接口接收返回的缓冲区数据 运行 按下一个按键 比如 a 我们暂时让按键对应的编码输出了

大家好,我是讯享网,很高兴认识大家。



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

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

一键BIOS制作_一键BIOS制作
讯享网

按下一个按键,比如a:

一键BIOS制作_数据_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制作_#include_03

没有问题。

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

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

一键BIOS制作_数据_04

我们移动一下鼠标:

一键BIOS制作_一键BIOS制作_05

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

小讯
上一篇 2025-05-10 15:23
下一篇 2025-06-01 23:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179731.html