编写OS第一步_编写引导程序boot

1.boot的启动过程

在编写boot之前,我们需要知道boot是在操作系统中起什么作用。

1. 在BIOS上电以后,会进行自我检查,然后查找boot程序,boot一般在磁盘的0号盘面0号磁道的1号扇区。
2. 在找到磁盘后,会直接查找起始地址为0x7c00的扇区,检查这个扇区是否是0xAA55结尾,如果是,则说明这个扇区是正确的引导扇区,将这个扇区的512B的内容加载到内存中。
注:0x7c00的算法
分配给操作系统引导区的大小为32kb,即从0x0000到0x7FFF,boot程序放在引导区的最后面,占512个字节。除此之外,还在boot程序后面预留了512个字节的位置。所以
0x7c00=0x7cFF - 512 - 512 + 1;
3. CPU开始执行内存中的boot模块。

2.编写boot.asm

文件放置在./src/boot/下面

org 0x7c00
	jmp START;set correct CS
	nop

StackBase equ 0x7c00		;Macro definition,equals StackBase=0x7c00

BootMessage:	db "Booting......"

START:
	mov ax, cs
	mov ds, ax
	mov ss, ax
	mov sp, StackBase

	;print string "Booting"
	mov al, 1
	mov bh, 0
	mov bl, 0x07		;black background white words
	mov cx, 13
	mov dh, 0
         
	;es=ds
	push ds	
	pop es
	mov bp, BootMessage	;offset address
	mov ah, 0x13		;13h interrupt
	int 0x10

	jmp $			;died loop

;times n,m   n:repeat conut  m:data
times 510-($-$$) db 0		;ensure 512B size $:now address $$:begin address

dw 0xaa55			;boot sector flag


3.创建软盘

使用ssh -X root@ip 连接虚拟机,在虚拟机下转移到项目的根目录
运行如下指令

dd if=/dev/zero of=软盘名称.img bs=512 count=2880

查看软盘是否创建成功

file 软盘名称.img

如果出现boot sector,则说明引导盘设置成功。

4.将boot程序写入软盘

在项目根目录编译boot程序

nasm ./boot/boot.asm -o ./boot.bin

将boot.bin写入软盘

dd if=./boot.bin of=./软盘名称.img bs=512 count=1 conv=notrunc

5.运行引导程序

根据当前目录下的bochsrc,运行bochs

bochs -q

在bochs的最下方命令行处依次输入

b 0x7c00#在0x7c00处设置断点
c#执行
b 0x7c2d#在0x7c2d处设置断点
c#执行

6.执行结果

在这里插入图片描述可以看到显示器出现了booting。。。。。,说明引导程序编写成功。
请添加图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了编写一个微信小程序预览文件接口,我们需要使用Spring Boot框架和微信小程序开发工具。 1. 在Spring Boot项目中添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 这些依赖项将启用Web应用程序和Thymeleaf模板引擎。 2. 创建控制器 我们需要在Spring Boot应用程序中创建一个控制器来处理请求并返回预览文件。创建一个名为PreviewController的类,并使用@Controller注释标记它。 ``` @Controller public class PreviewController { @GetMapping("/preview") public String previewFile() { // 返回预览文件页面 return "preview"; } } ``` 在上面的代码中,我们为GET /preview请求创建了一个处理程序。它返回一个名为“preview”的Thymeleaf模板。 3. 创建Thymeleaf模板 在src/main/resources/templates目录中,创建一个名为“preview.html”的新Thymeleaf模板。在模板中,我们将使用微信小程序开发工具的Web预览功能来预览文件。 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>微信小程序预览文件</title> </head> <body> <h1>微信小程序预览文件</h1> <div id="container"></div> <script src="https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html"></script> <script> // 设置Web预览参数 wx.previewFile({ url: 'http://www.example.com/file.pdf' }); </script> </body> </html> ``` 在上面的代码中,我们使用JavaScript代码设置Web预览参数,包括文件URL。该代码将在页面加载时自动执行。 4. 运行应用程序 现在我们可以运行Spring Boot应用程序并测试预览文件接口。在浏览器中导航到http://localhost:8080/preview,应该会看到一个预览文件页面,并在微信小程序开发工具中自动打开一个PDF文件。 总结 本文介绍了如何使用Spring Boot框架编写一个微信小程序预览文件接口。我们创建了一个控制器和一个Thymeleaf模板,然后使用微信小程序开发工具的Web预览功能来预览文件。这是一个简单而实用的示例,可以帮助你快速开始使用Spring Boot和微信小程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值