关闭

30天自制操作系统------增加命令行窗口

一、蜂鸣器发声 我们的操作系统还没有发声的功能,蜂鸣器发声的操作控制如下:     1、音高操作  (1)AL=0xb6;OUT(0x43,AL)  (2)AL=设定值的低8位;OUT(0x42,AL)  (3)AL=设定值的高8位;OUT(0x42,AL)  (4)设定值为0时当作65536来处理  (5)发声的音高为时钟除以设定值。也就是说设定值为10...
阅读(108) 评论(0)

30天自制操作系统------窗口操作

一个多任务的操作系统会有很多窗口,进行任务切换的同时窗口操作肯定也是必不可少的。   一、窗口切换 我们可以使用键盘或者鼠标进行窗口的切换。 自制的操作系统的窗口都是一个个图层,每个图层都是有各自的高度的,高度最低的是操作系统的背景图层(也就是桌面),高度最高的是鼠标图层。 我们使用按键F11来作为窗口切换的按键,按下F11,我们就将从下面数第2个图层的高度提升为sh...
阅读(92) 评论(0)

30天自制操作系统------图形处理相关

一、编写malloc 每个应用程序至少都需要一个窗口,窗口的内容需要保存在一块内存中,我们原来的做法是使用固定大小的数组如buf[320*200],然后往里面填写东西,但是这样子的后果就是应用程序的.hrb文件比较大,使用二进制文件打开.hrb文件发现里面有很多“00”。原因就是数组的声明就相当于汇编中的RESB指令,在内存中给为数组预留出了数组所需要的空间。 为了减小.hrb的大小,我们需要...
阅读(192) 评论(0)

30天自制操作系统------用C语言编写应用程序

一、攻击(3) 破坏操作系统可以从内存上下手,使得操作系统无法正常工作。定时器对于操作系统也是非常重要的,因为很多中断都是依赖于定时器的,没有定时器,光标就不会闪烁,任务也无法切换,整个操作系统就好像瘫痪了一般。 所以我们可以通过修改定时器的中断频率来攻击操作系统,因为操作系统的中断频率=主频/中断周期,CPU的主频是不可修改的,所以我们可以通过修改中断周期来修改中断频率,将中断周期设的大...
阅读(262) 评论(0)

30天自制操作系统------保护操作系统

一、攻击(1) 使用C语言编写的应用程序擅自修改操作系统管理的内存,导致操作系统的功能出错。 void api_end(void); void HariMain(void) { *((char*)0x00102600)=0; api_end(); } 二、解决办法(1)    为操作系统以及应用程序分配各自的段,互不影响。函数cmd_app(由C语言编...
阅读(100) 评论(0)

30天自制操作系统------字符串显示API

操作系统一般都会有一些系统功能可以供应用程序来使用,最基础的就是显示字符、字符串的API了。   一、API的编写 目前我们的应用程序都很简单,都是使用简单的汇编进行编写的。 而我们显示字符的函数cons_putchar是用C语言编写的,即使应用程序想要调用cons_putchar函数,首先需要传参,但是汇编语言是无法使用寄存器来给C函数传参的,所以我们需要在调用cons_putc...
阅读(120) 评论(0)

30天自制操作系统------文件读取

自制的操作系统已经可以实现一些简单的命令了,现在要新增一个type命令。   一、type命令简单介绍 1、type命令格式:type filename 2、type命令作用:读取文件内容,将文件内容显示在命令行窗口上   二、type命令实现思路 在实现命令行中dir命令时,我们了解到文件的相关信息在内存中保存为以下结构: struct FILEINFO { unsign...
阅读(235) 评论(0)

30天自制操作系统------命令行

实现一个命令行任务,首先需要一个命令行窗口,然后需要一个命令行任务,在命令行任务中实现命令行的相关功能。   一、创建一个命令行窗口 创建命令行窗口就是在屏幕上画个窗口出来,实际就是操作显存,这一部分利用前面已经实现的makewindow8函数即可实现。   二、创建一个命令行任务 有了命令行窗口,我们再来实现命令行的功能。 (1)光标闪烁功能       在刚开始做命令行时,...
阅读(173) 评论(0)
    个人资料
    • 访问:1285次
    • 积分:89
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档