也就是对 0xa0000-0xaffff这段内存地址中 写入颜色所对应的数值

bootpack.c中新增的代码

① 对所有颜色的宏定义

#define COL8_BLACK                   0
#define COL8_BigRed                 1
#define COL8_BigGreen               2
#define COL8_BigYellow              3
#define COL8_BigBlue                4
#define COL8_BigPurple              5
#define COL8_LightBrilliantBlue     6
#define COL8_WHITE                  7
#define COL8_BigGrey                8
#define COL8_DarkRed                9
#define COL8_DarkGreen              10
#define COL8_DarkYellow             11
#define COL8_DarkCyan               12
#define COL8_DarkPurple             13
#define COL8_LightDarkBlue          14
#define COL8_DarkGrey               15

②新增加的 函数 用来画一个矩形

void DrawBoxFillColor8(unsigned char *pAdd, int nLineLen,
unsigned char  Clolor8, int nX0, int nY0, int nX1, int nY1);void DrawBoxFillColor8(unsigned char *pAdd, int nLineLen,
unsigned char  Clolor8, int nX0, int nY0, int nX1, int nY1)
{int x , y;for(y = nY0; y <= nY1; y++){for(x = nX0; x <= nX1; x++){pAdd[y*nLineLen+x] = Clolor8;}}return ;
}DrawBoxFillColor8(pAdd, 320, COL8_BigGreen, 50, 50, 100,100);

bootpack.c 中所有代码

void io_hlt(void);//允许中断
void io_cli(void);//关中断
void io_out8(int nPort, int nData);//向端口 写入RGB
int io_load_eflags(void);//获取标志寄存器
void io_store_eflags(int nEflags);//恢复标志寄存器#define COL8_BLACK                   0
#define COL8_BigRed                 1
#define COL8_BigGreen               2
#define COL8_BigYellow              3
#define COL8_BigBlue                4
#define COL8_BigPurple              5
#define COL8_LightBrilliantBlue     6
#define COL8_WHITE                  7
#define COL8_BigGrey                8
#define COL8_DarkRed                9
#define COL8_DarkGreen              10
#define COL8_DarkYellow             11
#define COL8_DarkCyan               12
#define COL8_DarkPurple             13
#define COL8_LightDarkBlue          14
#define COL8_DarkGrey               15void init_palette(void);//初始化调色板
void set_palette(int nStart, int nEnd, unsigned char * pRGB);
void DrawBoxFillColor8(unsigned char *pAdd, int nLineLen,unsigned char  Clolor8, int nX0, int nY0, int nX1, int nY1);//320*200void HariMain(void)
{int i;unsigned char *pAdd = (unsigned char *)0xa0000; init_palette();  //设定调色板/*for (i = 0; i <= 0xffff; i++) {*(pAdd+i) = i & 0x0f;}*/DrawBoxFillColor8(pAdd, 320, COL8_BigGreen, 50, 50, 100,100);for (;;) {io_hlt();}
}void DrawBoxFillColor8(unsigned char *pAdd, int nLineLen,
unsigned char  Clolor8, int nX0, int nY0, int nX1, int nY1)
{int x , y;for(y = nY0; y <= nY1; y++){for(x = nX0; x <= nX1; x++){pAdd[y*nLineLen+x] = Clolor8;}}return ;
}void init_palette(void)
{static unsigned char Table_Rgb[16*3] = {0x00, 0x00, 0x00, /*  0:黑色 */0xff, 0x00, 0x00,    /*  1:亮红 */0x00, 0xff, 0x00,    /*  2:亮绿 */0xff, 0xff, 0x00,    /*  3:亮黄 */0x00, 0x00, 0xff,    /*  4:亮蓝 */0xff, 0x00, 0xff,    /*  5:亮紫 */0x00, 0xff, 0xff,    /*  6:浅亮蓝 */0xff, 0xff, 0xff,   /*  7:白 */0xc6, 0xc6, 0xc6, /*  8:亮灰 */0x84, 0x00, 0x00,    /*  9:暗红 */0x00, 0x84, 0x00,    /* 10:暗绿 */0x84, 0x84, 0x00,    /* 11:暗黄 */0x00, 0x00, 0x84,    /* 12:暗青 */0x84, 0x00, 0x84,    /* 13:暗紫 */0x00, 0x84, 0x84,    /* 14:浅暗蓝 */0x84, 0x84, 0x84    /* 15:暗灰 */};set_palette(0, 15, Table_Rgb);return;
}void set_palette(int nStart, int nEnd, unsigned char * pRGB)
{int i , eflags;eflags = io_load_eflags(); //记录中断许可标志的值io_cli();//将中断许可标志位置0 不允许 产生中断io_out8(0x03c8, nStart);//将想要设定的调色板号码 写入0X03c8for(i = nStart; i <= nEnd; i++) //按照R G B 的顺序进行写入{io_out8(0x03c9, pRGB[0] / 4);io_out8(0x03c9, pRGB[1] / 4);io_out8(0x03c9, pRGB[2] / 4);pRGB += 3;}io_store_eflags(eflags);//恢复 中断许可标志return;
}

Day04_绘制矩形相关推荐

  1. cad绘制椭圆的方法有几种_CAD新手入门教学:如何绘制矩形?

    各位热爱CAD的知友们,图图开了一个[电脑版的CAD教程]合辑,以后每周五给大家分享CAD教程啦,记得一定要来看呀!(仅为新手教学,大佬看见可直接说出更简易操作) 其实绘制矩形在CAD中来说,真的是一 ...

  2. python PyQt5如何绘制矩形框?(画框/绘框)

    参考代码: from PyQt5.QtWidgets import QWidget, QApplication, QLabel from PyQt5.QtCore import QRect, Qt f ...

  3. opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录: python+opencv进阶版学习笔记目录(适合有一定基础) 感兴趣区域传统绘制: openc ...

  4. canvas基础-绘制矩形(1)

    1.canvas基础知识 canvas元素是HTML5中新增的一个重要的元素,专门用来绘制图形,不过canvas本身不具备画图的能力,在页面中放置了canvas元素,就相当于在页面中放置了一块矩形的& ...

  5. VB API 之 第十一课 绘制矩形

    先来介绍几个画矩形的函数: DrawFocusRect():画一个焦点矩形: Rectangle():用当前选定的画笔描绘矩形,并用当前选定的画刷填充: DrawEdge():用指定的样式描绘一个矩形 ...

  6. 矩形做成翻页的效果html5,HTML5 在canvas中绘制矩形附效果图

    一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统,x坐标向右递增,y坐标向下递增. 使用绘图环境的矩形绘制函数来绘制矩形. fillRect(x,y,width,height) : 绘制 ...

  7. Html5画布(canvas)实例之绘制矩形

    路径方式绘制 - 矩形 | rect() canvas/shape/path/rect.html <!DOCTYPE HTML><html><head> <t ...

  8. html5绘制矩形动画,HTML5下绘制矩形教程

    绘制矩形 上一节,我们使用lineto()方法绘制一个封闭的矩形.其实,canvas的api提供了rect()方法可以绘制矩形.rect()方法是路径方法,它会把指定的矩形添加到当前路径的子路径中.它 ...

  9. qt整个窗口上绘制矩形与在窗口的子控件上绘制矩形

    引言 创建一个基于QDialog的项目,自动生成ui文件,此时再添加新文件,创建一个基于QWidget的ui类,此类具有自定义标题栏,让该自定义类显示在窗口Dialog上,一开始具有红色的边框线,且四 ...

  10. qt在窗口的子部件中绘制矩形

    引言 在窗口中绘制矩形,只需重写paintEvent()函数,在重回函数中实现绘制矩形便可.但在窗口的某一个子部件中实现绘制矩形,此时就需重写事件过滤函数,在指定的子部件的绘图事件实现绘制矩形. 结构 ...

最新文章

  1. python 分词包_NLP相关python包
  2. python中如将一个文件夹中的多张图片都进程序?
  3. objective-c 2.0的字面量Literals
  4. NS_ASSUME_NONNULL_BEGIN,NS_ASSUME_NONNULL_END
  5. mysql按字段拆分表_MYSQL命令怎么实现将表中某个字段中多个记录拆分,急求答案!...
  6. 使用Python定制词云
  7. Redis字符串类型的操作
  8. 医院职工离职申请证明模板,共计10篇
  9. 九、障碍罚函数法---内点、外点罚函数
  10. 什么是diff算法?
  11. 9小时速返地球!刚刚,神舟十三号返回舱平安降落,三位航天员“感觉良好”...
  12. vue 组件自己调用自己
  13. 华硕win10键盘失灵_华硕键盘失灵一键修复的方法_win10华硕快捷键失灵的解决方法...
  14. 搭建图像搜索引擎(之0):霍比特人直方图
  15. 手机网速正常电脑很慢_路由器WiFi速度正常,但电脑和手机上网速度慢怎么办?...
  16. android降低屏幕分辨率,让游戏更尽兴 手动调低Android手机屏幕分辨率
  17. 怎么去思考一个问题,提高解决问题的能力
  18. 2017中国云平台发展现状与趋势研究报告
  19. SPI Flash是什么?
  20. C#应用程序退出后托盘图标(notify…

热门文章

  1. springboot集成rocketmq
  2. RabbitMQ学习总结 第五篇:路由Routing
  3. 通过Properties读取配置文件
  4. tomcat 改端口 运维最最重要的就是有看日志的习惯
  5. 结对编程-四则运算(挑战出题)
  6. 12篇学通C#网络编程——第一篇 基础之进程线程(转)
  7. 学校的图书馆,很漂亮哦
  8. 入门React第二天(函数式组件传值)
  9. C#中唯一的三元运算符
  10. winfrom模拟表单同步数据、上传文件(.net core)