30OS笔记(1)
来源:互联网 发布:在淘宝上怎么搜索发票 编辑:程序博客网 时间:2024/05/19 20:20
从第一天到第四天
汇编、操作系统的完全什么都不知道,所以只是自己一点一点猜测尝试,简单写两笔免得忘得太快吧。。。
首先这个纸娃娃系统是写在软盘里的。由于没有软驱,用VM的时候到调用显卡BIOS函数的时候总是出现 “”客户机操作系统已禁用 CPU。请关闭或重置虚拟机“” 这种东西。其他没什么问题。
(1)在批处理中..表示上一级目录;
(2)
+——————— 0×0
| Interrupts vectors(中断向量表)
+——————— 0×400
| BIOS data area(BIOS的数据区域)
+——————— 0×5??
| OS load area(操作系统加载区域)
+——————— 0x7C00
| Boot sector(引导区域)
+——————— 0x7E00
| Boot data/stack(引导数据/堆栈)
+——————— 0x7FFF
| (not used)
+——————— (…)
这个表给出了操作系统从0x7c00开始加载,0x7c00-0x7dff都是用于启动区的。然后把整个系统从0x8200装载进去(缓冲区)。但似乎电脑自动将他前512字节留给启动区(直接复制数据不好吗?有可能是效率问题),也就是从0x8200才是真正的操作系统内容。至于为何选用0x7c00,是历史原因。
延伸:http://www.glamenv-septzen.net/en/view/6
(3)
写操作系统的结构:
1、写个启动区ipl10
2、用汇编和c写系统
3、揉到一起
(4)C语言函数与寄存器的对应
ESP,是一直指向栈顶的指针。EBP指向活动记录。EAX是返回值。
第一个形参地址[ESP+4],依次递增。
与C语言联合使用时,只有EAX、ECX、EDX这3个能自由使用。
(5)色号设定
这里用300*200的8位颜色模式,色号使用8位二进制数,仅有256种颜色。而RGB方式是用6位16进制数。为了与#ffffff格式对应而使用了调色板,
其实就是个目录索引。做这个索引的目的是为了省内存。
这里给出只有当
3*N*B>3*N*B'+(B'+B)*2^B'时,调色盘才能省。
N表示像素数,B表示原色号位数,B'表示调色盘色号位数。
从以上公式看出,由于B'在指数位上,所以当色位数一高调色板就没有什么卵用。因此现在真彩色压根儿就不用这玩意儿。可见这本书有多老....
(6)
static相当于DB,声明数组相当于RESB
汇编、操作系统的完全什么都不知道,所以只是自己一点一点猜测尝试,简单写两笔免得忘得太快吧。。。
首先这个纸娃娃系统是写在软盘里的。由于没有软驱,用VM的时候到调用显卡BIOS函数的时候总是出现 “”客户机操作系统已禁用 CPU。请关闭或重置虚拟机“” 这种东西。其他没什么问题。
(1)在批处理中..表示上一级目录;
(2)
+——————— 0×0
| Interrupts vectors(中断向量表)
+——————— 0×400
| BIOS data area(BIOS的数据区域)
+——————— 0×5??
| OS load area(操作系统加载区域)
+——————— 0x7C00
| Boot sector(引导区域)
+——————— 0x7E00
| Boot data/stack(引导数据/堆栈)
+——————— 0x7FFF
| (not used)
+——————— (…)
这个表给出了操作系统从0x7c00开始加载,0x7c00-0x7dff都是用于启动区的。然后把整个系统从0x8200装载进去(缓冲区)。但似乎电脑自动将他前512字节留给启动区(直接复制数据不好吗?有可能是效率问题),也就是从0x8200才是真正的操作系统内容。至于为何选用0x7c00,是历史原因。
延伸:http://www.glamenv-septzen.net/en/view/6
(3)
写操作系统的结构:
1、写个启动区ipl10
2、用汇编和c写系统
3、揉到一起
(4)C语言函数与寄存器的对应
ESP,是一直指向栈顶的指针。EBP指向活动记录。EAX是返回值。
第一个形参地址[ESP+4],依次递增。
与C语言联合使用时,只有EAX、ECX、EDX这3个能自由使用。
(5)色号设定
这里用300*200的8位颜色模式,色号使用8位二进制数,仅有256种颜色。而RGB方式是用6位16进制数。为了与#ffffff格式对应而使用了调色板,
其实就是个目录索引。做这个索引的目的是为了省内存。
这里给出只有当
3*N*B>3*N*B'+(B'+B)*2^B'时,调色盘才能省。
N表示像素数,B表示原色号位数,B'表示调色盘色号位数。
从以上公式看出,由于B'在指数位上,所以当色位数一高调色板就没有什么卵用。因此现在真彩色压根儿就不用这玩意儿。可见这本书有多老....
(6)
static相当于DB,声明数组相当于RESB
0 0
- 30OS笔记(1)
- 30OS笔记(2)
- 30OS笔记(3)
- OS学习笔记(1)
- os 课程自学笔记1(初学)
- uC/OS-II学习笔记(1)
- 笔记(OS)
- uC/OS学习笔记1
- ORANGE OS学习笔记1
- OS学习笔记(2)
- Python--小甲鱼学习笔记--第30课:文件系统(os、os.path)
- symbian os 学习笔记(1)——symbian os 中的“变态”C++
- python学习笔记(1)--os和os.path模块
- uc/os学习笔记1【uc/os的任务管理】
- t440 安装os 10.11 笔记1(win8 os x 双系统)
- python 系统学习笔记(十二)---os os.path os.walk
- python 系统学习笔记(十二)---os os.path os.walk
- python 系统学习笔记(十二)---os os.path os.walk
- 【杭电oj2025】查找最大元素
- 网络面试题:TCP和UDP的9个区别是什么
- Dynamic 2D Imposters: A Simple, Efficient DirectX 9 Implementation
- WPS常见问题01——如何禁止自动生成序号如1. 2. 3. 4.
- Java基础--数组和链表的区别
- 30OS笔记(1)
- RecyclerView 的使用详解(一)
- XML文件解析--xpath技术<一>
- Android自动化之uiautomator(一)
- 01字典树模板
- 推荐!手把手教你使用Git
- 渐变圆形及矩形
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- java基础--Set、List和Map的区别