linux-0.11分析:boot文件 bootsect.s 第一篇随笔
boot文件 bootsect.s 第一篇随笔
参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ]
bootsect.s
开机后会主动把由硬件设置好的主动把第一磁盘扇区212字节的内容读取到内存中

1、boot文件
bootsect.s
第一段指令代码,只是把开机从磁盘读取的这段bootsect.s代码复制到了另一片区域,还设置了栈顶
mov ax,#BOOTSEG ;BOOTSEG = 0x07c0
mov ds,ax
mov ax,#INITSEG ;INITSEG = 0x9000
mov es,ax
mov cx,#256
sub si,si
sub di,di
rep
movw ;rep movw字 就是 es:si = ds:di 然后si+1 di+1;这样循环执行256(cx)次,每次移动一个字
jmpi go,INITSEG ;INITSEG = 0x9000
go:
mov ax,cs
mov ds,ax
mov es,ax mov ss,ax
mov sp,#0xFF00

继续从磁盘加载setup.s这段代码的内容到内存中
load_setup:
mov dx,#0x0000 ; 驱动器0,磁头0
mov cx,#0x0002 ; 从扇区2开始读,轨道0
mov bx,#0x0200 ; 地址=512,在INITSEG中
mov ax,#0x0200+SETUPLEN ; 服务2,需要读的扇区数量 SETUPLEN = 4
int 0x13 ; 阅读它
第三步就是把系统的内存读取到内存中,顺便在显屏上打印一下东西
ok_load_setup: ; 获取磁盘驱动器参数,特别是扇区/磁道的数量
......
; 打印msg1处的内容
mov ah,#0x03 ; 读取光标位置
xor bh,bh
int 0x10
mov cx,#24
mov bx,#0x0007 ; 第0页,属性7(正常)
mov bp,#msg1
mov ax,#0x1301 ; 写入字符串,移动光标
int 0x10 ; 好的,我们现在已经写了消息
; 我们希望加载系统(0x10000)
mov ax,#SYSSEG ; SYSSEG = 0x1000
mov es,ax ; segment of 0x010000
call read_it
call kill_motor
.......

bootsect.s主要做了哪些事情了?需要和Makefile和build.c配合完成

linux-0.11分析:boot文件 bootsect.s 第一篇随笔的更多相关文章
- linux-0.11分析:boot文件 setup.s 第二篇随笔
boot文件 setup.s 第二篇随笔 参考 [github这个博主的][ https://github.com/sunym1993/flash-linux0.11-talk ] 中断获取光标的位置 ...
- 【从头到脚品读 Linux 0.11 源码】第一回 最开始的两行代码
从这一篇开始,您就将跟着我一起进入这操作系统的梦幻之旅! 别担心,每一章的内容会非常的少,而且你也不要抱着很大的负担去学习,只需要像读小说一样,跟着我一章一章读下去就好. 话不多说,直奔主题.当你按下 ...
- Linux 0.11下信号量的实现和应用
Linux 011下信号量的实现和应用 生产者-消费者问题 实现信号量 信号量的代码实现 关于sem_wait和sem_post sem_wait和sem_post函数的代码实现 信号量的完整代码 实 ...
- Linux 0.11中write实现
看了一下Linux 0.11版本号write的实现,首先它在标准头文件unistd.h中有定义 int write(int fildes, const char * buf, off_t count) ...
- Linux 0.11源码阅读笔记-总结
总结 Linux 0.11主要包含文件管理和进程管理两个部分.进程管理包括内存管理.进程管理.进程间通信模块.文件管理包含磁盘文件系统,打开文件内存数据.磁盘文件系统包括空闲磁盘块管理,文件数据块的管 ...
- Linux 0.11源码阅读笔记-文件管理
Linux 0.11源码阅读笔记-文件管理 文件系统 生磁盘 未安装文件系统的磁盘称之为生磁盘,生磁盘也可以作为文件读写,linux中一切皆文件. 磁盘分区 生磁盘可以被分区,分区中可以安装文件系统, ...
- Linux 0.11源码阅读笔记-中断过程
Linux 0.11源码阅读笔记-中断过程 是什么中断 中断发生时,计算机会停止当前运行的程序,转而执行中断处理程序,然后再返回原被中断的程序继续运行.中断包括硬件中断和软件中断,硬中断是由外设自动产 ...
- Linux 0.11源码阅读笔记-总览
Linux 0.11源码阅读笔记-总览 阅读源码的目的 加深对Linux操作系统的了解,了解Linux操作系统基本架构,熟悉进程管理.内存管理等主要模块知识. 通过阅读教复杂的代码,锻炼自己复杂项目代 ...
- Linux内核:分析coredump文件 - 内核代码崩溃
转自:http://blog.csdn.net/guowenyan001/article/details/12975221 一.分析Core文件 1.1 找到core文件目录,启动mycrash:my ...
随机推荐
- linux篇-centos7 安装cacti
1 cacti运行环境准备 cacti需要php+apache+mysql+snmp+RRDTool,以及cacti本身.cacti本体是用php开发的网站,通过snmp对远端设备信息进行采集.apa ...
- 题解 P7075 [CSP-S2020] 儒略日
当时考场上因为这个炸掉,一年后回来复仇. 这里提供一个与大多数人不一样的做法. 首先考虑一个简单一些的问题,怎么应付单个询问? 不难想到,我们对于一个日期,让他从 \(-4713\) 年 \(1\) ...
- SSH 的使用和配置
命令 ssh user@hostname -p port Windows 下首次执行这个命令会由于 Windows 默认没有运行 ssh-agent 导致无法连接,可以通过在 powershell 下 ...
- HTML行内元素与块级元素有哪些及区别详解
转自 https://www.jb51.net/web/724286.html 这篇文章主要介绍了HTML行内元素与块级元素有哪些及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具 ...
- ES6 - promise(3)
上一篇熟悉了promise的具体过程: promise的过程: 启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指定多个). 从p ...
- Spring-Cloud-Alibaba系列教程(一)Nacos初识
前言 在2020年即将开启SpringCloudAlibaba的专题,希望2020年共同学习进步. 学习资料 文档 Naco文档 程序猿DD Spring Cloud Aliabab专题 专题博客 视 ...
- 为什么 SQL 语句使用了索引,但却还是慢查询?
一.索引与慢查询 聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引 CREATE ...
- 实验一:在FW上配置静态路由实现互通
实验:在FW上配置静态路由实现互通 网络拓扑图 一.配置步骤 1.配置IP地址 R1: FW: ISP: 2.配置路由 ①在R2上面配置静态路由 ②在ISP上面配置静态路由 3.在FW上配 ...
- 【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结
华为运动健康服务(HUAWEI Health Kit)为三方生态应用提供了REST API接口,通过其接口可访问数据库,为用户提供运动健康类数据服务.在实际的集成过程中,开发者们可能会遇到各种问题,这 ...
- 技术分享 | Appium 用例录制
原文链接 下载及安装 下载地址: https://github.com/appium/appium-desktop/releases 下载对应系统的 Appium 版本,安装完成之后,点击 " ...