【操作系统学习日记】4.控制电脑的第一步:MBR

2024-04-12 06:38

本文主要是介绍【操作系统学习日记】4.控制电脑的第一步:MBR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

启动盘的设置

首先,先说明一下启动盘怎么设置。
在ata0后添加:
ata0-master:type=disk,path=”hd60M.img”,mode=flat,cylinders=121,heads=16,spt=63

在这里我们用到了path=hd60m.img,这个文件是由汇编语言编译的,就要用到NASM了
NASM是一个为可移植性与模块化而设计的一个80x86的汇编器。我们的汇编代码就由它来编辑。

nasm下载地址:
http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D

MBR跑起来

下面是范例的汇编代码,主要功能就是在屏幕上打印字符串“1 MBR”

;主引导程序 
;------------------------------------------------------------
SECTION MBR vstart=0x7c00         mov ax,cs      mov ds,axmov 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, 0           ; 左上角: (0, 0)mov     dx, 0x184f      ; 右下角: (80,25),; VGA文本模式中,一行只能容纳80个字符,共25行。; 下标从0开始,所以0x18=24,0x4f=79int     0x10            ; int 0x10;;;;;;;;;    下面这三行代码是获取光标位置    ;;;;;;;;;
;.get_cursor获取当前光标位置,在光标位置处打印字符.mov ah, 3        ; 输入: 3号子功能是获取光标位置,需要存入ah寄存器mov bh, 0        ; bh寄存器存储的是待获取光标的页号int 0x10     ; 输出: ch=光标开始行,cl=光标结束行; dh=光标所在行号,dl=光标所在列号;;;;;;;;;    获取光标位置结束    ;;;;;;;;;;;;;;;;;;;;;;;;;     打印字符串    ;;;;;;;;;;;;还是用10h中断,不过这次是调用13号子功能打印字符串mov ax, message mov bp, ax       ; es:bp 为串首地址, es此时同cs一致,; 开头时已经为sreg初始化; 光标位置要用到dx寄存器中内容,cx中的光标位置可忽略mov cx, 5        ; cx 为串长度,不包括结束符0的字符个数mov ax, 0x1301   ; 子功能号13是显示字符及属性,要存入ah寄存器,; al设置写字符方式 ah=01: 显示字符串,光标跟随移动mov bx, 0x2      ; bh存储要显示的页号,此处是第0页,; bl中是字符属性, 属性黑底绿字(bl = 02h)int 0x10     ; 执行BIOS 0x10 号中断
;;;;;;;;;      打字字符串结束   ;;;;;;;;;;;;;;;jmp $       ; 使程序悬停在此message db "1 MBR"times 510-($-$$) db 0db 0x55,0xaa

记得保存为纯文本文档,即用gredit打开的那种,注意不要用libreOffice Writer,要不那漫天的报错会让你难过一整天:(,搜了一天发现是格式错误,心情是异常的崩溃。

编译成功后(如果有错可以自行百度或提问我,说不定我搜过呢)
输入命令ls -lb mbr.bin,可以看到生成的文件数据
-rw-r–r– 1 root root 512 9月 5 21:06 mbr.bin

学过linux的读者肯定很熟悉啦,如果没学的话可以看看《鸟哥的linux私房菜》,我之后会单独写一篇分享我的操作系统学习资料,会给出这些资料的下载地址的,当然无所不能的CSDN上也有下载,不过需要积分,还是能省则省啊~

接下来输入命令

dd if=/root/下载/nasm-2.10.07/mbr.bin of=/bochs/hd60M.img bs=512 count=1 conv=notrunc

这句话的目的是将我们的编译后的文件输出为模拟出来的硬盘hd60M.img

然后在bochs目录下输入bin/bochs -f bochsrc.disk
回车
然后点continue,回到终端,输入c,ok,可以看到绿色的文字 1 MBR闪耀啦~

为了平复激动的心情,我觉得还是把成果图放出来:
bochs学习

这篇关于【操作系统学习日记】4.控制电脑的第一步:MBR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896382

相关文章

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;