30天自制操作系统

30天自制操作系统-30days diy os 30days_diy_os 30days_diy_os-head.pdf30days_diy_os-0.pdf30days_diy_os-1.pdf30days_diy_os-2.pdf30days_diy_os-3.pdf30days_diy_os-4.pdf30days_diy_os-5.pdf30days_diy_os-6.pdf30days_diy_os-7.pdf30days_ 阅读详情

自制操作系统前5天内容的总结

- Hello World输出

; hello-os
; TAB=4

		ORG		0x7c00			; ORG命令指令程序开始地址
		JMP		entry			;无条件跳转到entry函数中
		//我寻思,后面这段代码不会执行啊,直接跳entry了
		//测试后发现如果不加后面这一段,是无法通过编译阶段的
		DB		0x90
		DB		"HELLOIPL"		;
		DW		512				; 
		DB		1				; 
		DW		1				; 
		DB		2				; 
		DW		224				; 
		DW		2880			;
		DB		0xf0			; 
		DW		9				; 
		DW		18				; 
		DW		2				;
		DD		0				; 
		DD		2880			; 
		DB		0,0,0x29		; 
		DD		0xffffffff		; 
		DB		"HELLO-OS   "	; 
		DB		"FAT12   "		; 
		RESB	18				; 

entry:
		MOV		AX,0			; 将0放入AX通用寄存器
		MOV		SS,AX			; 这里将栈顶位置设置成0,需要注意的是SS不能直										   	                                       ;接赋值
		MOV		SP,0x7c00       ;栈的偏移地址 SS:SP
		MOV		DS,AX           ;DS,ES均为段寄存器,一般在DS中存放即将访问的数;据地址
		MOV		ES,AX

		MOV		SI,msg          ;对源变址寄存器进行修改,作用为存放输出函数的地址
		//attention:能够只带地址的寄存器非常有限,只有BX,BP,SI,DI
putloop:
		MOV		AL,[SI]         ; 将SI的内存地址copy到AL
		ADD		SI,1			; SI++
		CMP		AL,0			; AL的值为0,即msg程序已经执行完成了
		JE		fin				;条件跳转
		MOV		AH,0x0e			; 
		MOV		BX,15			; 
		INT		0x10			; BIOS文档中调用显卡的中断
		/*
		显示一个字符:
		AH=0X0E;
		AL=character code;
		BH=0;
		BL=color code;
		*/
		JMP		putloop
fin:
		HLT						; 程序结束,CPU休眠
		JMP		fin				; 

msg:
		DB		0x0a, 0x0a		; 
		DB		"hello, world"  ;这里可以替换成各种字符,只要不超过内存上限
		DB		0x0a			; 
		DB		0

		RESB	0x7dfe-$		;在该地址后面填0,否则会报错
		DB		0x55, 0xaa
  • CPU部分寄存器的介绍

    • AX------accumulator
    • CX------counter
    • DX------data
    • BX------base
    • SP------stack pointer
    • BP------base pointer
    • SI ------source index
    • DI ------destination index

    以上给出的寄存器均为16位寄存器,其中AX,BX,CX,DX均可以拆分为高8位与低8位,反过来说,后面的四个寄存器是不能直接读取到其高8和低8位的。应该通过前4个16位寄存器来间接读取。

    mov AX SI
    再通过AH和AL来读取SI的高低8位。
    间接寻址 mov AL [SI] 将SI的内存地址赋值给AL,这种用法仅限于BX,BP,SI,DI。

    到此,该系统还只是运行内存中的代码,而实际中操作系统需要从其他外部存储器获得程序运行所需要的的机器代码,所以后面增加了通过软盘为介质装载程序的步骤。
    增加的代码如下:

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		error			;JUMP if carray

中断号0x13手册中的说明为:

AH=0x02//读盘
AH=0X03;//写盘
AH=0x04;//校验
AH=0x0c;//寻道
AL=处理对象的扇区数;
CH=柱面号&0xff;
CL=扇面区(0-5位)|(柱面号&0x300)>>2;
DH=磁头号;
DL=驱动器号;
ES:BX=缓冲地址;
FLAGS.CF=0;没有错误
FLAGS.CF=1;有错误,错误号码存入AH内(与重置功能相同)

可以理解为该段代码设定了磁盘数据读入后存放的缓存区,ES:BX但是,磁盘存在读取过程中出现错误的可能性,所以将该段代码改为最多重复读取五次。

entry:
//配置上没有变化
		MOV		AX,0			 
		MOV		SS,AX
		MOV		SP,0x7c00
		MOV		DS,AX

		MOV		AX,0x0820
		MOV		ES,AX
		MOV		CH,0			 
		MOV		DH,0			
		MOV		CL,2			
		//将失败次数存到SI中
		MOV		SI,0			
retry:
		MOV		AH,0x02			
		MOV		AL,1			
		MOV		BX,0
		MOV		DL,0x00			
		INT		0x13			
		JNC		fin				
		ADD		SI,1			;SI++
		CMP		SI,5			; SI>=5?
		JAE		error			; SI >= 5  JMP error
		MOV		AH,0x00
		MOV		DL,0x00			; 使用驱动器A
		INT		0x13			; 触发中断
		JMP		retry
《30天自制操作系统》——虚拟机使用 《30天自制操作系统》是一本学习操作系统的好教材,它教我们怎么从建立引导区开始,从零实现一个操作系统。但是,实现书中例子的时候,我们需要不断将我们写好的操作系统代码写入软盘并且还要不断重启电脑来试验我们的代码,大家一定感到很头疼吧。 与其不停的重启,不如使用模拟器,向大家推荐一款模拟器qemu,它是由Fabrice Bellard编写,功能非常强大。那么下面我就来教大家使用qemu运行书中自制操 阅读详情

相关推荐

Keil MDK打开别人工程总报错?手把手教你修复‘找不到main.o’和‘未定义’的路径问题

本文详细解析Keil MDK工程移植时常见的'找不到main.o'和'未定义'编译错误,提供从路径修复到宏定义配置的完整解决方案。通过系统化的检查清单和预防措施,帮助开发者快速解决MDK工程迁移问题,提升嵌入式开发效率。

weixin_28724661的博客 397

《30天自制操作系统》从入门到放弃

30天自制操作系统 01day 1.0写在前面的话 关于01day~03day,可以完全参考下述链接(下述内容部分也是来源此链接): https://www.cnblogs.com/yucloud/category/1472969.html 1.1手打img 在下面这条链接中下载填制编辑软件 https://www.jb51.net/softs/601421.html#downintro2 (其实我不并推荐这种编辑器,使用vscode即可:https://www.cnblogs.com/baby123/p/

wxkhturfun的博客 1万+

Visual Studio Community与Visual Studio Community与VS Code有啥区别

Visual Studio Code提供了基本的代码编辑、调试和版本控制功能,以及丰富的插件和扩展库。Visual Studio Community和Visual Studio Code在功能上有很大的差异,Visual Studio Community提供了比Visual Studio Code更多的功能,包括代码重构、智能提示、图形化设计等。他的优势在于它的轻量级和灵活性。此外,Visual Studio Code还具有丰富的扩展和插件生态系统,用户可以通过安装插件来扩展其功能,从而满足自己的需求。

m0_56551554的博客 2843

30天自制操作系统(day1)

30天自制操作系统第一天内容

m0_61722509的博客 2300

【信息学奥赛一本通】1215:迷宫(bfs版)

同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。每组测试数据的第1行是一个正整数n(1≤n≤100),表示迷宫的规模是n×n的。接下来是一个n×n的矩阵,矩阵中的元素为‘再接下来一行是4个整数ha,la,hb,lb,描述A处在第ha行, 第la列,B处在第hb行, 第lb列。一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.

chu_xiaojie的博客 944

运维面试常见问题

对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。优缺点:优点:利用索引可以加速对数据的检索,索引是可以唯一的,创建索引允许指定单个列或者多个列缺点:减慢了数据录入速度,同时也增加了数据库的尺寸大小。

asdmjy123的博客 1370

30天自制操作系统——自写设计

写在前面:这是我在学习了一个学期的《30天自制操作系统》之后,用了差不多一个周的时间,所写出来的一个纸娃娃操作系统,有一个小的开机动画,可以输入密码,然后有一个小的画图程序。现在把他写出来,只是为了记录这一个学期的学习经历吧,至少证明自己学有所成,所有所获。 一、实验环境 硬件环境:计算机,无特殊配置要求 软件环境:QEMU虚拟机、批处理文件、相关编译工具等 语言环境:C语言、汇编语言 二、功能介...

君陌的博客 8884

西门子【Automation Framework V1.2】AF架构:从软件栈到高效自动化项目的构建蓝图

本文深入解析西门子Automation Framework V1.2 (AF架构) 的核心价值与实施蓝图。该框架通过定义标准化的软件栈(如TIA Portal V19、STEP7、WinCC Unified)和严格的安装配置流程,将自动化项目开发从依赖个人经验的“手工作坊”模式,转变为高效、可复制的工业化模式。遵循此架构,工程师能快速构建稳定可靠的项目基础,规避环境冲突,从而专注于核心工艺与逻辑设计,大幅提升团队协作与项目交付效率。

weixin_29230059的博客 428

《30天自制操作系统》入门方法总结

《30天自制操作系统》是一位日本大佬“川合秀实”老师所写的一本书,逻辑清晰,语言朴实,我跟着中文版的电子书学习了两天,感觉很好。在这里我就实操环节简单做一下总结,以帮助初学者更好的入门

阿江的故事 785

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图 画好后效果图 实现代码如下 import matplotlib.pyplot as plt #算法平均排名 _alg_=[1.405,2.643,2.786,2.167] y=[1,2,3,4]#alg1,alg2,alg3,alg4 通过Nemenyi测试计算得到的临界值CD CD=1.024 h_CD=CD/2 plt.figure(figsize=(10,6)) plt.scatter(_alg_,y,s=10

大模型天花板 4464

Veristand自动化测试:Stimulus Profile Editor实战指南

本文是Veristand自动化测试中Stimulus Profile Editor的实战指南。详细介绍了如何利用这一图形化工具,将繁琐的手动测试流程转化为一键自动执行的“剧本”,涵盖工程控制、信号编程、预制动作调用等核心功能,并通过手把手案例演示了构建首个自动化测试脚本的全过程,帮助测试工程师显著提升效率与可靠性。

dd012的博客 492

30天自制操作系统——第1天 从计算机结构到汇编程序入门

落灰一学期的《30天自制操作系统》,希望能够利用大二最后这几个月完成操作系统的制作,以下是我阅读本书所记录的笔记以及学习过程,愿顺利完成。 1.先动手操作 安装“二进制编辑器”,网址:http://www.vcraft.jp/soft/bz.html 启动画面 ...

weixin_59179454的博客 3841

智能座舱SoC平台横评:SA8155P、SA8255P、SA8295P、MT8678、MT8628 谁是下代车机首选?

高通SA8295P以PC级架构、强悍AI算力,代表安卓阵营迈向“本地大模型+空间计算”阶段;联发科MT8678则凭借低功耗 + 高带宽,成为副驾多媒体/副屏智能化的性价比之王。在座舱设计中,SoC平台决定了你能给用户什么样的交互方式,选型时切忌只看跑分,而要回归“体验-热设计-平台生态”的三角平衡。

weixin_43199439的博客 3358

《30天自制操作系统》第一天helloos0

《30天自制操作系统》 博主开始学习这本书,希望大家能多多指教!如果大家也想学的请跟着学习!!! 第1天 从计算机结构到汇编程序入门 准备工作 二进制编辑器(Binary Editor、HxD ) 虚拟机(VMware-workstation、书中自带的qemu) 光盘内容:文章中使用的程序 动手操作 源代码 注意红点标注的位置 中间都是00 结尾是下图 注意行号。并保存为"hello...

Loong_Matrix_World的博客 1394

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

30天自制操作系统源文件

30天自制操作系统源文件 【下载地址】30天自制操作系统源文件 30天自制操作系统源文件欢迎来到“30天自制操作系统”源代码仓库 项目地址: https://gitcode.com/open-source-toolkit/d1bb...

gitblog_09720的博客 664

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

30天自制操作系统 Day1

30天自制操作系统学习记录Day1

qq_35089484的博客 311

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

30天自制操作系统——用U盘启动自制系统

最近试读了《30天自制操作系统》的前两章,感觉很有意思。 但是发现里面写的系统都是用软盘启动的,现在在大多数电脑上已经看不见软驱了,所以如果想运行书中的操作系统只能通过qemu(随书光盘中已经附带)模拟运行。这样的话成就感就会少很多,感觉像是在做一个简单的控制台程序,相信大多数童鞋都希望能做出一个能在真机上运行,能秀出来的作品。那有没有方法通过U盘去启动书中“自制”的操作系统呢?我的思路就是通过

尘埃 1万+

由《30天自制操作系统》引发的漫画创作

大家可还记得《30天自制操作系统》的封面上的那只猫吗?记得当时,在果壳网有人问,为何这只猫长了两只尾巴呢,延着这条线,我把这本书捧上了展示的舞台。事隔四个多月,我又重提此书。 这本经我手宣传的书,就像我的宝一样,每当桌子上对着这着可爱的猫,我都会微微一笑,因为它的俏皮,因为它若隐若现,更因为这独特的封面设计和译者@周自恒 翻译中的那种幽默。 我希望能您把这本书看到第十五天,把十五天看完后,

zuoninger的专栏 2650

《30天自制操作系统》学习笔记——第一天

写在前面:         一直都在想写写学习博客。因为既然工作是和电脑打交道,用博客记录自然也是一件很顺其自然的。我是一个比较认可笔记这种形式的人。走马观花之后,要把好看的花带回家,这样才能心满意足。                  本人是在读大学生,说实话计算机功底很薄,编程语言只是学过c和java,汇编还是在《微机原理》课上学的,很是不深入。但是既然是在学习,就不用怕自己不懂

文行知的专栏 2561

【亲测免费】 《30天自制操作系统》源码中文版教程

欢迎来到《30天自制操作系统》的实践之旅!此项目由Yourtion维护,提供了详细的步骤,引导你自建一个名为OSASK的操作系统。下面是该项目的关键元素概览,包括目录结构、启动文件和配置文件的详细介绍。 ## 1. 项目目录结构及介绍 本项目遵循清晰的组织结构,便于开发者循序渐进地学习操作系统开发。 - **根目录**: - `LICENSE.txt`:包含了项目的授权信息。 - `...

gitblog_00080的博客 1224

《30天自制操作系统总结》

文章目录重要变量系统功能GDT, IDT内存分配功能理解显示模式内存管理图层管理窗口显示定时器公共缓冲区工具 重要变量 name file mdec 每次鼠标中断产生的数据 bootpack.c mx,my 鼠标位置 bootpack.c fifo 缓冲区,存放鼠标、键盘、定时器缓冲数据 bootpack.c 系统功能 id 功能 所在文件 说明 1 ...

qq_41956860的博客 1094

《30天自制操作系统》 day0-day2小结

早之前看过一些,总觉得有些不好懂。现在看第二遍发现懂得多一些了,看来确实需要反复学习才是【笑】 前两章涉及到的工具特别多,一不注意就混乱了。作者有意循序渐进地引导我们一步一步编写并且优化代码,第一遍看的时候倒是太急躁导致后来根本看不下去。 这次将两章的讲的重要内容做点归纳,尤其注重了工具的使用和它的优化改良。

mintancy的博客 1291

《30天自制操作系统》笔记一二

第一天主要是安装相关的软件,以及明白

sysu_smie_WuZewei的专栏 2035

30天自制操作系统 pdf_day00——前言&&目录【专栏】30天自制操作系统

本专栏主要记录一个玩具操作系统的开发过程。鉴于我的知识水平,没能力开发难度更高,更有实用价值的操作系统,所以我选择的参考资料是《30天自制操作系统》。本专栏适合零基础对操作系统感兴趣的同学们,或者正在学习操作系统的同学们观看,各位读者有任何意见和建议,欢迎在评论区留言,或者私信我。为原作者的版权考虑,本专栏不会放任何原书内容的图片,各位想看原书的同学们,建议购买正版图书。环境配置win10 64位...

weixin_39900023的博客 468

30天自制操作系统-初体验

最近在图书馆翻阅关于操作系统的书籍,看到川和秀实的自制操作系统决定也动手尝试一下,这本书书名就叫做30天自制操作系统。首先还是附上光盘镜像的获取地址吧。http://www.drv5.cn/sfinfo/15502.html 有了这个地址就可以得到一些现成的文件以及一些作者推荐的编译软件,非常建议去阅读一下原书,作者的文风轻松有趣,能让人有读下去的欲望。 接下来我们下载一个软件https://www.veryhuo.com/down/html/62222.html 这是一个二进制编译器,我们用它来生成.

ltt摸鱼带师的博客 1045
上一篇: 写给自己及一月整体规划
下一篇: Redis击穿,传统,雪崩和预热
shu_8708
博客等级 码龄10年 45粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值