暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第八天的学习思考: 关于鼠标是怎么移动怎来的 思考过程. 现在忘掉作者的代码思路,如果是我们自己写代码,鼠标指针应该怎么样才能动起来呢? 我的思路: 其实让鼠标指针动起来真的非常简单,只需要改变下面函数中的mx,my变量,也就是鼠标的position变量,鼠标指针就会移动了.但是在移动前一定要把原来鼠标指针出现的位置填充为背景 色,…
暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第九天的课程已学完,确实有点不想写这个笔记了,因为开学了,还要学习课业上的压力,转博了压力山大啊. 这一天的课程最难的我感觉是后面的memory free的部分,这一部分有很多已经没有接触到的东西,所以感觉比较难. 内存的管理在任何os中都是一个重要的问题. 还是按照作者的书本上第九天的顺序的来做笔记吧: 1:整理源文件部分,这一部…
<30天自制操作系统>一书中第1天和第二天中有关汇编语言的程序的理解 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称可以是任意的字符串(8字节) DW 512 ; 每个扇区(sector)的大小(必须为512字节) DB 1 ; 簇(cluster)的大小(必须为1个扇区) DW 1 ; FAT的起始位置(一般从第…
1 介绍文本编辑器 这部分可直接略过 2 继续开发 helloos.nas中核心程序之前的内容和启动区以外的内容先不讲了,因为还涉及到一些软盘方面的知识. 然后来讲的是helloos.nas这个文件 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下这部分记录的是FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动扇区的名称可以是任意的字符串 (8字节) DW ; 每个扇区(sector)的大小(必须是…
我们继续学习操作系统的相关内容. ; hello-os ; TAB=4 ORG 0x7c00 ; このプログラムがどこに読み込まれるのか ; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述 JMP entry DB 0x90 DB "HELLOIPL" ; ブートセクタの名前を自由に書いてよい(8バイト) DW 512 ; 1セクタの大きさ(512にしなければいけない) DB 1 ; クラスタの大きさ(1セクタにしなければいけない) DW 1 ; FATがどこから始…
//bootpack.c 完整代码 #include <stdio.h> void io_hlt(void); void io_cli(void); void io_out8(int port, int data); int io_load_eflags(void); void io_store_eflags(int eflags); void init_palette(void); void set_palette(int start, int end, unsigned char *rgb…
harib00a: 添加的部分从P46开始,制作IPL准备开始从磁盘装载程序了 笔者讲解了软盘的驱动的构造,以及汇编语言读取软盘的方法 MOV AX,0x0820 MOV ES,AX ; 柱面0 ; 磁头0 ; 扇区2 MOV AH,0x02 ; AH=0x02 : 读盘 ; 1个扇区 MOV DL,0x00 ; A驱动器 INT 0x13 ; 调用磁盘BIOS harib00b: 这一部的目的主要是试错 P51 软盘是很不可靠的存储设备,有时候会发生不能读取数据的情况 改良后的程序就是这一部分…
harib16a: 这一部分,我们在系统中实现读取文件内容的命令type.在windows中,输入“type 文件名”,在Linux中,输入“cat 文件名”都可以显示文件的内容.我们先来看看如何读取文件本身的内容.这一节的前面部分,笔者花了大量篇幅去寻找文件内容在内存中的位置得到了以下规律: 1.clustno 表示文件从哪个扇区开始放: HARIBOTE.SYS 02 00 -> clustno = 0x0002 :0x004200        IPL10.NAS 39 00 -> cl…
harib12a: 这一部分我们来尝试两个任务的切换.下面我们一步一步的看: 1.定义TSS任务状态段(task statuc segment):定义的一种段,需要在GDT中定义使用 //TSS任务状态段(task statuc segment) struct TSS32 {//26个int成员,104字节 //与任务设置相关的信息(任务切换时,除backlink,都不会被写入) int backlink, esp0, ss0, esp1, ss1, esp2, ss2, cr3; //32位寄…
harib10a: 简化字符串的显示:我们发现字符串显示三条语句总是重复出现,并且总是一起出现的.接下来我们把它归纳到一个函数中,这样便于使用. x,y--位置的坐标    c--字符颜色  (color)    b--背景颜色  (back color)    s--字符串     (string)    l--字符串长度(length) void putfonts8_asc_sht(struct SHEET *sht, int x, int y, int c, int b, char *s,…