有了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语言绘制操作系统图像界面相关推荐

  1. 利用C语言绘制操作系统图像界面

    阅读博客的朋友可以参看视频: Linux kernel Hacker, 从零构建自己的内核 有了C语言这一利器后,不多多拿来用,那就太对不起前面的一系列努力了.那么怎么表现C语言的强大功能呢,如果还只 ...

  2. linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手

    如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...

  3. linux6.8设置中文界面,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面

    原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...

  4. kodi linux版本,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面

    原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...

  5. linux下kodi安装目录,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面

    原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...

  6. linux kodi 设置中文,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面

    原标题:Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面 来自:https://www.linuxmi.com/linux-kodi-18-8.html Kodi团队刚刚发布了XB ...

  7. c语言编译器_学C语言写自己的K语言:编译器词法分析。

    词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...

  8. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  9. python使用爬虫写一个自己的翻译器(带图像界面)

    python使用爬虫写一个自己的翻译器(带图像界面)   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为 ...

最新文章

  1. memcache缓存失效
  2. UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f349' in position 64: illegal multibyt
  3. CF1041C Coffee Break
  4. html5 可以用adb 调试,ADB常用命令及作用
  5. spark yarn任务的executor 无故 timeout之原因分析
  6. 51nod 1172 Partial Sums V2 卡精度的任意模数FFT
  7. 变速后没有声音_问答 | 现代朗动at,启动后怠速不稳,热车后正常,是什么问题?...
  8. arccatalog点要素显示不完_初中生到底要不要住校?班主任:不建议,看完这3点你就明白了...
  9. ArrayList LinkedList
  10. 二进制、十进制和16进制对照表以及对应的字符
  11. YUV格式视频流文件下载
  12. java bmp 变色_java怎么实现将 bmp图片黑底白字转换为白底黑字?将白色设置为透明色,谢谢...
  13. javascript中caller与callee的作用以及用法
  14. 世界由物质、能量、信息
  15. java ee页面间怎么传值_jsp页面间常见的几种传值方式
  16. Binutils 相关工具记录
  17. Manacher算法的基础应用:小A的回文串
  18. 使用Python画动态图像
  19. hbase hyperbase 区别_星环hyperbase和开源hbase的那些事
  20. .NET框架-LINQ 9类操作符使用举例

热门文章

  1. 数据结构中的原子、分子和物质
  2. 壹百度—百度十年千倍的29条法则
  3. spwm单项并网的实现
  4. android 亮度 对比度,Android图像锐化,饱和度,色调,亮度和对比度
  5. Python数据分析速成课程
  6. 服务器资源监控工具———node_exporter
  7. ArrayList详解,看这篇就够了
  8. 根据身份证号码取得此CID户籍所在地
  9. 玩转IT 适合学软件工程师的四类人群
  10. 【文献阅读】将VQA视作元学习(Damien Teney等人,ECCV,2018)