linux下c语言写界面,利用C语言绘制操作系统图像界面
有了C语言这一利器后,不多多拿来用,那就太对不起前面的一系列努力了。那么怎么表现C语言的强大功能呢,如果还只是一味的在界面上输出几行字符,那太没意思,考虑到,我们的目标是做出像windows那样具备舒心的图像用户界面那样的系统,所以在这一节,我们由字符模式切换入画面模式,初步体验下,那些绚丽多彩的图像界面是如何发展而成的。
要想由字符模式转入图形模式,我们需要操作硬件,特别是向显卡发送命令,让其进入图形显示模式,就如同前面我们所做的,要操作硬件,一般需要使用BIOS调用,以下几行就是打开VGA显卡色彩功能的代码:
mov al, 0x13h
mov ah, 0x00
int 0x10
其中al 的值决定了要设置显卡的色彩模式,下面是一些常用的模式设置:
0x03, 16色字符模式
0x12, VGA图形模式, 640 * 480 * 4位彩色模式,独特的4面存储模式
0x13, VGA图形模式, 320 * 200 * 8位彩色模式,调色板模式
0x6a, 扩展VGA图形模式, 800 * 600 * 4彩色模式
我们采用的是0x13模式,其中3202008 中,最后的数值8表示的是色彩值得位数,也就是我们可以用8位数值表示色彩,总共可以显示256种色彩。
系统显存的地址是0x000a0000,当我们执行上面几句代码后,望显存地址写入数据,那么屏幕就会出现相应的变化了。
我们先看看内核的汇编代码部分(kernel.asm):
%include
linux下c语言写界面,利用C语言绘制操作系统图像界面相关推荐
- 利用C语言绘制操作系统图像界面
阅读博客的朋友可以参看视频: Linux kernel Hacker, 从零构建自己的内核 有了C语言这一利器后,不多多拿来用,那就太对不起前面的一系列努力了.那么怎么表现C语言的强大功能呢,如果还只 ...
- linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手
如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...
- linux6.8设置中文界面,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...
- kodi linux版本,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...
- linux下kodi安装目录,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...
- linux kodi 设置中文,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...
- c语言编译器_学C语言写自己的K语言:编译器词法分析。
词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...
- Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法
Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...
- python使用爬虫写一个自己的翻译器(带图像界面)
python使用爬虫写一个自己的翻译器(带图像界面) 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为 ...
最新文章
- memcache缓存失效
- UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f349' in position 64: illegal multibyt
- CF1041C Coffee Break
- html5 可以用adb 调试,ADB常用命令及作用
- spark yarn任务的executor 无故 timeout之原因分析
- 51nod 1172 Partial Sums V2 卡精度的任意模数FFT
- 变速后没有声音_问答 | 现代朗动at,启动后怠速不稳,热车后正常,是什么问题?...
- arccatalog点要素显示不完_初中生到底要不要住校?班主任:不建议,看完这3点你就明白了...
- ArrayList LinkedList
- 二进制、十进制和16进制对照表以及对应的字符
- YUV格式视频流文件下载
- java bmp 变色_java怎么实现将 bmp图片黑底白字转换为白底黑字?将白色设置为透明色,谢谢...
- javascript中caller与callee的作用以及用法
- 世界由物质、能量、信息
- java ee页面间怎么传值_jsp页面间常见的几种传值方式
- Binutils 相关工具记录
- Manacher算法的基础应用:小A的回文串
- 使用Python画动态图像
- hbase hyperbase 区别_星环hyperbase和开源hbase的那些事
- .NET框架-LINQ 9类操作符使用举例