裸机状态-汇编语言-实现OS
2021-01-22 10:16
标签:函数 获取 OLE rgba code 动画效果 输出 hub 文件 实现OS 这个标题给的太大了,只能说实现了几个小的功能而已。 如标题所说,纯裸机,也就是没有任何的字符库,BIOS中断也没有使用,利用时钟中断、键盘中断、BEEP、在200 * 320 像素显示模式下实现了 自己的系统(DOGE) 先来看看效果吧 虽然直接看演示比较直接,但是还是啰嗦一下。 包括4个功能板块。 1、文本编辑,实现了大小写字母、数字的输入,其中包括caps的大写锁定,shift键的大写控制,空格、退位、换行。 2、图片显示,使用轮播的方式,实现动画效果,主要是将现成的图片处理成点阵,汇编语言就很好写了。 3、游戏,游戏的逻辑还是比较简单,主要是人物移动,碰撞检测,还有吃苹果,分数刷新等等。 4、音乐播放,这个功能是可以和上面三个功能并行的,单核多线程(DOGE) 然后总结一下代码: 第一次使用汇编语言写代码,总的来说就是初代开发师真的NB。 我就比较偷懒了,由于在开发的时候,存在很多相似的几百行代码,所以直接用C++生成,手敲真的不是很顶得住 关于字符库,这个资源是在网上找的,不得不说,要感谢前人。 关于图像处理,简单的原理是将RGBA图片转为灰度图,然后将颜色深的点的坐标输出就可以了。 但是在图片中存在大量的黑块之后,这个办法就不太合理了,因为会出现了很多没有必要的点。 于是学习了一下,PYTHON对于图像的线条处理,直接获取图片的轮廓,这样就可以减少没必要的点,降低存储压力。 最后是项目文件: main.asm 程序的主文件 font.sm, digit.asm, role.asm, fruit.asm, 数据文件,主要存储字体文件,人物点阵,水果点阵 geolib.asm 分装的处理画线、画框、画方块事件的函数 time_solver, 处理时钟中断,在这里处理整体的逻辑,包括对于文本编辑器功能的处理 draw_font.asm 处理打印点阵的函数,可以打印出字体、人物、游戏素材、图片,其中本质都是点阵,所以这一块的复用率很高 因此给出了一个封装。 key_solver: 处理键盘中断,将输入的键放入键盘的状态表 game.asm 处理游戏逻辑 music.asm 处理音乐 整体的代码 实在是太多了,就上传到 github , 算是为后人留下一点点的参考吧。 https://github.com/loenvom/HAO_OS 裸机状态-汇编语言-实现OS 标签:函数 获取 OLE rgba code 动画效果 输出 hub 文件 原文地址:https://www.cnblogs.com/loenvom/p/14305767.html
下一篇:Java数据类型