编写MBR主引导记录
BIOS
检测,初始化硬件。挑一些重要的,能保证计算机能运行那些硬件的基本IO操作。
唤醒BIOS
唤醒BIOS需要知道其入口地址,在最后将跳转到0x7c00处
接电的一瞬间,cs:ip寄存器被初始化为0xF000:0xFFF0,所以等效地址是0xFFFF0(BIOS入口地址)
抓一张bochs图来分析

- 第一个框:cs值(段基址)为0xf000,ip值(段内偏移地址)为0xfff0,组合出的地址是0xffff0(BIOS入口地址)
- 第二个框:在内存0xffff0地址处是一条跳转指令,cpu根据该指令跳转至0xfe05b处(BIOS真正的地方)
- 第三个框:接电强制将cs置为0xf000
MBR
BIOS最后的工作就是检验0盘0道1扇区的内容,因为mbr要离BIOS最近,
在检验过程中,若BIOS检验出该磁盘末尾两个字节是0x55和0xaa则认定其为MBR,便加载到物理地址0x7c00,然后跳转过去,即可开始执行MBR。
- MBR大小为512字节
- 第511以及512字节必须是0xaa,0x55,这是由于咱们模拟的是x86平台,所以采用小端序
编写MBR
;主引导程序
;----------------------------
SECTION MBR vstart=0x7c00 ;起始地址为0x7c00mov ax,csmov ds,ax ;由于BIOS通过 0:0x7c00跳转MBR,所以此时cs为0,因此借他来初始化寄存器mov es,axmov ss,axmov fs,axmov sp,0x7c00;清屏利用0x06号子功能,上卷全部行,则可清屏
;------------------------
;INT 0x10 功能号:0x06 功能:上卷窗口
;------------------------
;输入:
;AH 功能号:0x06
;AL = 上卷行数(若为0则表示全部行,太适合我们辣)
;BH = 上卷行属性
;(CL,CH) = 窗口左上角的(X,Y)位置
;(DL,DH) = 窗口右下角的(X,Y)位置
;无返回值mov ax,0x600mov bx,0x700mov cx,0mov dx,0x184fint 0x10;;;;;;;;;;;下面三行获取光标位置 ;;;;;;;;;;;
;.get_cursor获取当前光标位置,并在光标位置打印字符mov ah,3mov bh,0int 0x10;;;;;;;;;;;获取光标位置结束 ;;;;;;;;;;;;;;;;;;;;;;打印字符串 ;;;;;;;;;;;;还是用10h中断,不过这次调用13号子功能打印字符串mov ax,messagemov bp,ax ;es:bp为串首地址,es此时同cs一致;开头时已经为sreg初始化;光标位置要用到dx寄存器中内容,cx中的光标位置可huluemov cx,5mov ax,0x1301mov bx,0x2int 0x10;;;;;;;;;;;; 打印字符串结束 ;;;;;;;;;;;;;;;jmp $message db "1 MBR"times 510-($-$$) db 0db 0x55,0xaa
- 4~8行:
运行结果

CMD
mkdir OS
cd OS
vim mbr.S
nasm -I include/ -o loader.bin loader.S
sudo dd if=./mbr.bin of=/usr/local/hd60M.img bs=512 count=1 conv=notrunc
cd /usr/local
sudo bin/bochs -f bochsrc.disk
相关文章:
编写MBR主引导记录
BIOS 检测,初始化硬件。挑一些重要的,能保证计算机能运行那些硬件的基本IO操作。 唤醒BIOS 唤醒BIOS需要知道其入口地址,在最后将跳转到0x7c00处 接电的一瞬间,cs:ip寄存器被初始化为0xF000:0xFFF0,所以等效地址是0…...
从零开始搭建React+TypeScript+webpack开发环境-自定义配置化的模拟服务器
技术栈 我们将使用Node.js和Express.js作为我们的后端框架,以及Node.js的文件系统(fs)模块来操作文件和文件夹。此外,我们将使用Node.js的require和delete require.cache来加载和更新模拟数据。 项目结构 首先,让我们定义一个简单的项目结…...
python 之字典的相关知识
文章目录 字典的基本特点:1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作:字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典:注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…...
上下游系统对接的沟通与协作
在工作中,有时会有对接其他部门系统的需求,这种需求虽然不复杂,但是跨部门协作,往往会出现各种难以沟通、协调的情况。 踩的坑多了,就记录下来。 注意:在本文中,A系统调用B系统,A依…...
pytest 的使用===谨记
发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法(测试类不能带有__init__方法) c) 模块中test开头的函数(可以不在class中) 注意点: pytest是以方法为单位发现用例的,你…...
Qt 4.8.6 的下载与安装
Qt 4.8.6 的下载与安装 Qt 4.8.6 的下载与安装下载并解压 MinGW 4.8.2Qt4.8.6 库的安装Qt Creator 3.3.0 的安装配置 Qt Creator测试 官方博客:https://www.yafeilinux.com/ Qt开源社区:https://www.qter.org/ Qt 4.8.6 的下载与安装 学习《Qt Creato…...
图形推理 | 判断推理
文章目录 一、位置规律二、样式规律三、属性规律四、数量规律 一、位置规律 平移 方向:直线(上下、左右、斜对角线)、绕圈(顺逆时针)常见步数:恒定、递增(等差) 旋转 方向ÿ…...
npm的使用
package.json 快速生成package.json npm init -y “version”: “~1.1.0” 格式为:「主版本号. 次版本号. 修订号」。 修改主版本号是做了大的功能性的改动 修改次版本号是新增了新功能 修改修订号就是修复了一些bug dependencies "dependencies": {&…...
Web服务器实战
网站需求 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student 网站访问学生信息,www.openlab.com/data网站访问教学资料 www…...
2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序
2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现: 国家《第十四个五年规划和 2035 年远景目标纲要》中提出,将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…...
pandas教程:Essential Functionality 索引 过滤 映射 排序
文章目录 5.2 Essential Functionality(主要功能)1 Reindexing(重新索引)2 Dropping Entries from an Axis (按轴删除记录)3 Indexing, Selection, and Filtering(索引,选择,过滤)Selection with loc and i…...
pyspark连接mysql数据库报错
使用pyspark连接mysql数据库代码如下 spark_conf SparkConf().setAppName("MyApp").setMaster("local")spark SparkSession.builder.config(confspark_conf).getOrCreate()url "jdbc:mysql://localhost:3306/test?useUnicodetrue&characterE…...
HK WEB3 MONTH Polkadot Hong Kong 火热报名中!
HK Web3 Month 11月除了香港金融科技周外,HK Web3 Month又是一大盛事,从10月29日开始开幕直到11月18日结束。此次将齐聚世界各地的Web3产业从业者、开发者、社群成员和学生来参与本次盛会。除外,超过75位产业知名的讲者与超过50场工作坊将为…...
“第六十三天”
这两天怎么做的这么别扭,为什么我的vs 的strlen函数包括终止字符了; 哦哦,明白了,fgets函数读取在未达到指定字长,或者遇见空白符之前,会读取前面的所有字符,所以会读取换行符,而get…...
常用排序算法实现
时间复杂度 O ( 1 ) O(1) O(1) void func1(int n){int count 100;count; } void func2(int n){int count 100;for(int i 0; i < count;i){} } int func3(int n){return n; }O ( n ) O(n) O(n) void func1(int n){int count 100;for(int i 0; i < n;i){count;} …...
使用表单登录方法模拟登录通信人家园,要求发送登录请求后打印出来的用户名下的用户组类别
目标网站:https://www.txrjy.com/forum.php 一、进入网页,右键“检查” 二、输入用户名和密码,点击“登录”,点击“Network”,上划加载项找到蓝色框中的内容 三、点击第一个加载项,找到URL 四、相关代码: …...
Redis 的缓存击穿,穿透,雪崩及其解决方案
1 缓存穿透 什么是缓存穿透? 大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨大的压力,可能直接就被这么多…...
JWT原理分析——JWT
了解为什么会有JWT的出现? 首先不得不提到一个知识叫做跨域身份验证,JWT的出现就是为了更好的解决这个问题,但是在没有JWT的时候,我们一般怎么做呢?一般使用Cookie和Session,流程大体如下所示:…...
Jprofiler/ VisualVM 定位内存溢出OOM
下载,接受协议下一步下一步,最后选择与IDEA集成OK ej-technologies - Java APM, Java Profiler, Java Installer Builder IDEA配置参数: # F:\study\spring-test\dump 为dump文件保存路径-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathF:\study\spring-test\dumppackage …...
NOIP2023模拟13联测34 competition
题目大意 有一场题目数量为 m m m的比赛,有一个团队想要来参加。 这个团队有 n n n个选手,编号为 i i i的选手能做第 l i ∼ r i l_i \sim r_i li∼ri道题,每题他都有 100 % 100\% 100%的概率做出来。 这个团队会随机派出一只队伍来参…...
前端自动化部署终极指南:从CI/CD到容器化的完整流程
前端自动化部署终极指南:从CI/CD到容器化的完整流程 【免费下载链接】all-of-frontend 你想知道的前端内容都在这 项目地址: https://gitcode.com/gh_mirrors/al/all-of-frontend GitHub 加速计划(all-of-frontend)是一个全面的前端学…...
易景信息冲刺港股:年营收32亿同比降8% 核心管理层出自龙旗科技
雷递网 雷建平 4月3日上海易景信息科技股份有限公司(简称:“易景信息”)日前递交招股书,准备在港交所上市。年营收32亿同比降8% 利润7022万易景信息是一家AI时代的全栈智能硬件产品解决方案提供商,产品组合包括智能手机、平板电脑…...
OpenClaw飞书机器人实战:千问3.5-9B自动回复消息
OpenClaw飞书机器人实战:千问3.5-9B自动回复消息 1. 为什么选择OpenClaw飞书千问3.5-9B组合? 去年底我开始尝试用AI自动化处理团队沟通需求时,发现市面上大多数方案要么需要将数据上传到第三方平台,要么配置复杂得让人望而却步。…...
药片机MCGS6.2 与西门子 S7 - 200 PLC 联机程序探究
药片机MCGS6.2和西门子S7-200plc联机程序4,在自动化生产领域,药片机的精准控制至关重要。MCGS6.2 作为一款优秀的人机界面组态软件,与西门子 S7 - 200 PLC 配合,能实现高效的自动化控制。今天咱就唠唠它们联机程序的一些要点。 通…...
剪映自动化工具来了:AI帮你自动剪辑成片
文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 AI赋能剪映自动化剪辑 📒 🎯 设计理念 🔧 核心功能 📦 安装与使用 ⚓️ 相关链接 ⚓️ 📖 介绍 📖 在视频创作中,剪辑工作往往耗时耗力。从素材导入、字幕匹配、BGM选择到最终导出,每一个环节都需要创作者投入大…...
基于单片机的室内环境监测控制系统的设计与实现
一、系统介绍 本论文针对室内环境监测和控制的需求,设计并实现了一套基于单片机的智能环境监测控制系统。系统包括硬件设计和软件设计两个主要部分。在硬件设计方面,系统涵盖了单片机最小系统、OLED显示屏、按键电路模块、DHT11模块、ESP8266-01s模块和继…...
▲基于DQPSK调制解调+LDPC编译码+扩频解扩通信链路matlab误码率仿真
目录 1.本系统整体构架 2.各个模块基本原理 2.1 DQPSK原理简介 2.2 DQPSK解调原理 2.3 LDPC编译码 2.4 扩频技术原理 3.仿真结果 4.完整程序下载 1.本系统整体构架 整个程序,我们采用如下的流程图实现: 2.各个模块基本原理 2.1 DQPSK原理简介 …...
互联网大厂Java求职面试:三轮技术问答与详细解析(涵盖Spring Boot、微服务、数据库ORM等)
互联网大厂Java求职面试:三轮技术问答与详细解析 文章标签 Java,Spring Boot,微服务,面试,Jakarta EE,JVM,Hibernate,JUnit,Maven,Redis,Kubernetes文章简述 本文以严肃的面试官与风趣的水货程序员谢飞机之间的对话形式,模拟互联网大厂Java求职面试的三轮…...
开篇:高并发下MySQL主从延迟的挑战与诊断全景图
开篇:高并发下MySQL主从延迟的挑战与诊断全景图 凌晨三点,监控告警炸了。主库QPS冲到两万八,从库延迟曲线像坐了火箭——三分钟前还是秒级延迟,现在稳定在三百秒高位。业务侧已经出现数据不一致的客诉,运营群开始@全体成员。你揉着发红的眼睛,连上从库执行SHOW SLAVE STA…...
ViGEmBus技术指南:构建跨平台游戏控制器兼容解决方案
ViGEmBus技术指南:构建跨平台游戏控制器兼容解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 如何解决游戏控制器的跨平台兼容性难题&…...
