1.汇编语言。分别汇编器和链接as86和ld86。码如下面:

.globl begtext,begdata,begbss,endtext,enddata,endbss
.text
begtext:
.data
begdata:
.bss
begbss:
.text
BOOTSEG=0x7c0
entry start
start:
jmpi go,BOOTSEG go:
mov ax,cs
mov ds,ax
mov es,ax mov ax,#0x0600
mov cx,#0x0000
mov dx,#0xFFFF
int 0x10 mov cx,#20
mov dx,#0x0000
mov bx,#0x000c
mov bp,#msg1
mov ax,#0x1301
int 0x10
loop0:jmp loop0 msg1:
.ascii "Loading system..."
.byte 13,10
.org 510
.word 0xAA55
.text
endtext:
.data
enddata:
.bss
endbss:

BOOTSEG=0x7c00

entry start

start:

jmpi go,BOOTSEG

go:

entry start告诉编译器程序入口是start,我们这段是引导代码。引导代码在引导盘的指定位置处,BIOS会读取引导盘的第一个扇区到内存0x7c00:0x00处。

注意:程序执行在实模式以下。寻址方式段*16+偏移,要想在0x7c00初開始执行,要设BOOTSEG=0x7c0,而不是0x7c00。

jmpi go,BOOTSEG是跳转到0x7c00:go处运行。前面我们说到BIOS会读取引导扇区到内存的0x7c00处。而jmpi 这条语句使得引导程序从0x7c00開始运行,也就是说。開始运行我们当前的引导区程序。

mov ax,#0x0600

mov cx,#0x0000

mov dx,#0xFFFF

int 0x10

这段代码调用BIOS的0x10中断,功能是清屏。

mov cx,#20

mov dx,#0x0000

mov bx,#0x000c

mov bp,#msg1

mov ax,#0x1301

int 0x10

上面代码调用BIOS的0x10中断,显示字符串msg1

.org 510

.word 0xAA55

启动扇区标志

2.编译调试boot.s程序。

前边说过使用as86汇编器和ld86链接器,使用bochs模拟器,bochs支持虚拟的软盘和硬盘。由于软盘简单一些,所以我们把程序编译后放到软盘上就可以启动了。

(1)编译boot.s

as86 -0 -a -o boot.o boot.s

(2)连接boot.o

ld86 -0 -s -o boot boot.o

(3)制作虚拟软盘

dd bs=32 if=boot of=boot.img skip=1

由于boot前32字节是文件头,所以要跳过不写。把后边全部的内容写进boot.img,至此boot.img就是做好的可启动虚拟软盘了

3.执行调试

创建bochsrc.txt。输入bochs命令就可以调试boot程序

4.linux的dd命令具体解释

dd [option]

语法:

if=输入文件[STDIN]

of=输出文件[STDOUT]

ibs=bytes 一次读取bytes字节

skip=blocks,跳过输入文件开头的ibs*blocks块

seek=bytes,跳过输出文件bytes*blocks块

obs=bytes,一次写入bytes字节

bs=bytes,等于同一时候设置obs和ibs

版权声明:本文博主原创文章,博客,未经同意不得转载。

实现一个简单的boot的更多相关文章

  1. spring boot一个简单用户管理DEMO

    概述 该Demo旨在部署一个简单spring boot工程,包含数据编辑和查看功能 POM配置 <?xml version="1.0" encoding="UTF- ...

  2. Java Spring Boot VS .NetCore (一)来一个简单的 Hello World

    系列文章 Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filte ...

  3. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

  4. spring boot: @Entity @Repository一个简单的数据读存储读取

    spring boot: @Entity @Repository一个简单的数据读存储读取 创建了一个实体类. 如何持久化呢?1.使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中 ...

  5. spring boot入门笔记 (一) - 一个简单的说明+一个案例

    spring boot 简化开发:把平时开发者最常用的到一些步骤,按照开发者的习惯,把能包装的就包装成一些固有的工具类(就比如我们之前连接数据库时常写的DB工具类).当然,是在原有的spring框架的 ...

  6. 构建一个简单的Spring Boot项目

    11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...

  7. 一个简单的spring boot程序

    搭建一个spring boot项目十分的方便,网上也有许多,可以参考 https://www.cnblogs.com/ityouknow/p/5662753.html 进行项目的搭建.在此我就不详细介 ...

  8. 一个简单且易上手的 Spring boot 后台管理框架-->EL-ADMIN

    一个简单且易上手的 Spring boot 后台管理框架 后台源码 前台源码

  9. Linux内核分析—完成一个简单的时间片轮转多道程序内核代码

    ---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...

随机推荐

  1. Learning Cocos2d-x for WP8(3)——文字篇

    原文:Learning Cocos2d-x for WP8(3)--文字篇 C#兄弟篇Learning Cocos2d-x for XNA(3)——文字篇 文字,是人类文明的象征. 文字显示,可用字符 ...

  2. 【JAVA得知】struts2 于 Actionsupport 任务

    尊重原创:http://xumiao900.iteye.com/blog/469760     Action 跟 Actionsupport 的差别      当我们在写action的时候,能够实现A ...

  3. JAVA 保留两位小数的四种方法

    import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; publiccl ...

  4. 用java读写properties文件的代码

    package com.LY; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.F ...

  5. 恢复js文件在windows默认打开方式

    解决办法: 运行 regedit 打开注册表编辑器,定位 "HKEY_CLASSES_ROOT" > ".js" 这一项,双击默认值将数值数据改为&quo ...

  6. java该HashTable,HashMap和HashSet

    同一时候我们也对HashSet和HashMap的核心方法hashcode进行了具体解释,见<探索equals()和hashCode()方法>. 万事俱备,那么以下我们就对基于hash算法的 ...

  7. Python3.2官方文件翻译--课堂笔记和异常是阶级

    6.7备注 有时喜欢Pasca在"录"和C中"数据体"的数据类型很实用.集合一些数据项. 一个空类定义能够清楚地显示: class Employee: pass ...

  8. 使用JavaMail发送和接收电子邮件

    一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 如今非常多WEB应用在开发时都须要集成邮件发送功能.比如: 1. 给新注冊的用户自己主动发送一封包括其注冊信息的欢迎E-Mail ...

  9. Windows Phone开发(19):三维透视效果

    原文:Windows Phone开发(19):三维透视效果 三维效果也可以叫透视效果,所以,我干脆叫三维透视效果.理论知识少讲,直接用例开场吧,因为这个三维效果其实很简单,比上一节中的变换更省事,不信 ...

  10. VBoxGuestAdditions.iso下载

    http://download.virtualbox.org/virtualbox/4.1.2/VBoxGuestAdditions_4.1.2.iso 其他版本可能反过来确定..