![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 80
敲代码的洋葱头
v:Yww02240101
展开
-
8086架构从BIOS到Bootloader
8086内存架构分布:当8086加电或复位时,发出的第一条指令为FFFF0,位于第一个区域,访问的是ROM芯片。在ROM中还固化了一些程序供我们写操作系统的时候调用,它包括了对键盘的使用程序,对鼠标的使用程序,以及对显示的输入,输出。我们可以对这些程序进行调用。继续上面,我们说,第一条指令跳转到FFFF0处,实际上这一处内存地址存放的是一条JUMP指令,用来进行地址的跳转,。用汇编代码来书写的话就是JMP 段地址:偏移地址(8086架构)在8086架构下,加电或复位(reset)之后,除了CS段原创 2021-03-11 10:44:00 · 547 阅读 · 0 评论 -
操作系统开发日记-day5
书中关于C语言编译的过程和中间的文件可以参考这张图今天的其中一个小任务就是把我们写出来的命令行窗口填上颜色,这就要说明一下VRAM是什么东西了,VRAM是 video RAM的缩写,在电脑中指的是显卡内存,也就是用来显示画面的一段内存地址。我们在bootpack.c中用一个for循环来向地址0xa0000~0xaffff地址的位置写入0x15,意思是全部像素的颜色都是第15种颜色。void io_hlt(void);void write_mem8(int addr, int data);voi原创 2021-02-17 22:33:02 · 199 阅读 · 0 评论 -
操作系统开发日记-day4
; 今日添加的内容 MOV AX,0x0820 MOV ES,AX MOV CH,0 ; 柱面0 MOV DH,0 ; 磁头0 MOV CL,2 ; 扇区2 MOV AH,0x02 ; AH=0x02 : 磁盘读取 MOV AL,1 ; 1个扇区 MOV BX,0 MOV DL,0x00 ; A驱动器 INT 0x13 ; 磁盘BIOS调用 JC errorJC指令的功能:所谓JC,就是jump if c原创 2021-02-16 19:40:36 · 219 阅读 · 0 评论 -
操作系统开发日记-day3
制作真正的IPL(启动程序记载器)考虑到以后的开发,我们只需要利用nask制作一个512字节的启动区即可,剩下的部分我们用磁盘映像管理用具来做,这样开发就方便了day2/helloos4/ipl.nas修改了msg标号的指向的汇编指令,修改后如下:msg: DB 0x0a, 0x0a ; 换行 DB "hello, world" DB 0x0a ; 换行 DB 0 RESB 0x7dfe-$ ; 到0x7dfe在0x00中填补的命令 DB 0x55,原创 2021-02-15 23:19:21 · 324 阅读 · 0 评论 -
操作系统开发日记-day2
汇编入门DB指令:"data byte"的缩写,意思是往文件里直接写入一字节的指令RESB指令:"reserve byte"的缩写,如果写成RESB 10意思是我们预约了10个字节。DD、DW、DB的区别;符号的作用是注释,相当于c++的//符号,DB指令的功能也变得更广,可以直接编写字符串。$符号是一个变量,可以告诉我们这一行现在的字符数。在启动程序中,我们必须要保证第510字节(即第0x1fe)开始的地方是0x55 0xaa,使用$符号的话就可以直接计算出需要多少个字节来放0x00。上原创 2021-02-15 01:05:13 · 474 阅读 · 0 评论 -
操作系统开发日记-day1
操作系统的特性:通电之后自动运行映射文件:即:映射文件是软盘的备份数据,我们首先要将映射文件(软盘备份数据)写入到磁盘中,软盘的总大小是1440KB,因此,我们的映射文件的大小也是1440KB。步骤:第一步:编写一个通电之后就能跑的程序第二步:编写一个从磁盘中读取操作系统的程序,但是由于开始的时候只能读取磁盘的前512字节(规定死的),因此还要编写一个能够将操作系统剩余部分加载出来的加载程序。动手开发:下载二进制编辑器:Bz1621,下载链接 Bz1621下载链接打开helloos.i原创 2021-02-14 03:19:24 · 277 阅读 · 0 评论 -
鸿蒙OS源码分析:物理地址的映射
鸿蒙内核源码分析(内存映射篇) | 什么是内存最重要的实现基础 ? | 中文注解HarmonyOS源码 | v12.02MMU的本质虚拟地址(VA):就是线性地址,鸿蒙内存部分全是VA的身影,是由编译器和链接器在定位程序时分配的,每个应用程序都使用相同的虚拟内存地址空间,而这些虚拟内存地址空间实际上分别映射到不同的实际物理内存空间上。CPU只知道虚拟地址,向虚拟地址要数据,但在其保护模式下很悲催地址信号在路上被MMU拦截了,MMU把虚拟地址换成了物理地址,从而拿到了真正的数据。物理地址(PA):程序的转载 2021-02-09 17:31:45 · 639 阅读 · 0 评论