
操作系统
文章平均质量分 88
wanyongtai
这个作者很懒,什么都没留下…
展开
-
鼠标解读1
在通过鼠标中断获取到鼠标数据后,想到的第一件事情应该是怎么去解析它。最终通过解析的数据实现鼠标指针的移动经过调查,我们知道一下两点:鼠标正确的数据从 0xfa 开始鼠标数据是每3个一组循环代码实现unsigned char mouse_dbuf[3];unsigned char mouse_phase = 0;for (;;) { io_cli(); ...原创 2018-05-18 00:01:31 · 500 阅读 · 0 评论 -
全局描述符表解析
概念全局描述符表GDT是为了实现32位模式的分段,跟16位模式的分段是一个概念。只是实现方式不一样。 在32位中,描述一个段需要以下信息:段的大小(至少1M,即20位)段的起始地址(4G, 即32位)段的属性(禁止写入,禁止执行, 系统专用等,12位) 我们用64位(8字节)来标识一个段的基地址,及其属性。可是CPU并没有一个这样的64位段寄存器,我们能是用的依然只有16位...原创 2018-05-13 13:06:29 · 1547 阅读 · 0 评论 -
开启键盘中断
设置中断描述符表struct GATE_DESCRIPTOR *idt = (struct GATE_DESCRIPTOR *)0x0026f800;int i;for(i = 0; i < 256; i++){ set_gatedesc(idt + i, 0, 0, 0);}load_idtr(0x7ff, 0x0026f800);//键盘是IRQ1中断响...原创 2018-05-13 19:33:39 · 1567 阅读 · 0 评论 -
键盘鼠标中断进阶之 FIFO缓冲区
原理 有数据到来时,写入的 next + 1 一个数据被处理后,读出的next + 1 当 写入的 next 到头时,缓冲区开始的部分已经空出来了,可以让它回头循环起来,读 到头也是同理。这样就可以拥有一个永远也装不满,但占空间也不大的缓冲区 实现方法//FIFO缓冲区结构定义struct FIFO8{ unsigned char *buf; ...原创 2018-05-14 20:40:30 · 1150 阅读 · 0 评论 -
开启鼠标中断
设置中断描述符表for(i = 0; i < 256; i++){ set_gatedesc(idt + i, 0, 0, 0);}load_idtr(0x7ff, 0x0026f800);//键盘中断号是0x21// set_gatedesc(idt + 0x21, (int)asm_inthandler21, 2 * 8, AR_INTGATE32);// 鼠标...原创 2018-05-14 23:49:25 · 960 阅读 · 0 评论 -
鼠标解读2
aa原创 2018-05-22 21:54:39 · 391 阅读 · 0 评论 -
bochs 详细介绍
BOCHS 简介及配置Bochs 简介Bochs(读音同 Box)是用C++开发的以 LGPL 许可证发放的开放源代码的x86,x86-64模拟器,模拟整个PC。它被设计成可以运行于多种主流平台下,包括x86, PPC, Alpha, Sun和MIPS。和 Bochs 类似的虚拟机软件还有:VMware,Virtual PC,VirtualBox,但这些都使用了虚拟化技术,部分指...原创 2018-05-23 01:03:58 · 21826 阅读 · 0 评论