Hello,DTOS!(下)
如何验证编写的主引导程序?
解决方案设计:
将汇编源码编译为二进制机器码(nasm)
创建虚拟盘(bximage)
将二进制代码写入虚拟盘起始位置(dd)
在虚拟机中将虚拟盘作为启动盘执行(vmware)
就算编译得到了二进制码,如何将二进制的机器码拿到硬件上面去执行呢?
因为没有操作系统,所以必须要使用实际的存储介质了,比方说光盘。将我们编译得到的二进制码刻录到光盘中,然后让计算机从光盘来启动。但是这样做太麻烦了。
需要使用一个简单的方法,此时虚拟机就可以派上用场了。既然是虚拟机,就干脆彻底一点,创建一个虚拟盘。让虚拟机去读取虚拟盘中的二进制码。这样的话,就方便了。
如何将编译得到的二进制码写到一张虚拟盘中?
可以使用dd命令进行完成
实验原材料
nasm
.nasm boot.asm -o boot.bin
bximage 创建虚拟软盘,-fd代表的就是创建的虚拟软盘,虚拟软盘的大小为1.44M,-q表示我们不需要进行交互,一次性创建出a.img就可以了。
.bximage a.img -q -fd -size=1.44
-dd 将二进制的机器码写入虚拟软盘
dd if=boot.bin of =a.img bs=512 count=1 conv=notrunc
if表示输入,输入就是我们编译得到的二进制机器码;
of表示输出,输出到a.img这个虚拟软盘上去;
bs表示我们写入时每个单元的大小,在这个地方我们只需要写512个字节就可以了。因此用count=1来指定一个512字节;
conv=notrunc表示连续的写入,不要有任何的间隔
以上就是实验所用到的命令。
总结:
主引导程序的代码量不能超过512字节
主引导程序需要使用汇编语言开发
主引导程序中可以通过BIOS中断使用硬件功能
主引导程序运行于实模式(地址都是实际的物理地址)
Hello,DTOS!(下)的更多相关文章
- C++程序结构---1
C++ 基础教程Beta 版 原作:Juan Soulié 翻译:Jing Xu (aqua) 英文原版 本教程根据Juan Soulie的英文版C++教程翻译并改编. 本版为最新校对版,尚未定稿.如 ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...
- ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Project ...
- ABP应用层——数据传输对象(DTOs)
ABP应用层——数据传输对象(DTOs) 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Pro ...
- 程序员的自我救赎---12.2.3: 虚拟币交易平台(区块链) 下 【C#与以太坊通讯】
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十三 || DTOs 对象映射使用,项目部署Windows+Linux完整版
更新 很多小伙伴在用 IIS 发布的时候,总是会有一些问题,文章下边 #autoid-6-0-0 我也简单的动图展示了,如何 publish 到 IIS 的过程,如果你能看懂,却发现自己的项目有问题的 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探
更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...
- asp.net core下一个简单的分页技术
在做web应用的时候免不了要对数据进行分页,我最近在做asp.net core的开发的时候就遇到了这个需求,现在简单的记录一下: public class PaginatedList<T> ...
- 第2课 - Hello, DTOS!
第2课 - Hello, DTOS! 1. 主引导程序 主引导程序是软件还是固件?如果是软件,那么由谁开发?如何开发? (1)上一节说到了固件和软件的区别.由于主引导程序没有在出厂前固化到硬件中,因此 ...
随机推荐
- Html学习之十八(表格与表单学习--统计表制作)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Vue入门案例(二)
创建一个 .html 文件,然后通过如下方式引入 Vue: <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.js ...
- LG2921 [USACO2008DEC]Trick or Treat on the Farm 内向基环树
问题描述 LG2921 题解 发现一共有 \(n\) 个点,每个点只有一条出边,即只有 \(n\) 条边,于是就是一个内向基环树. \(\mathrm{Tarjan}\) 缩点. 但是这个题比较猥琐的 ...
- Nginx 安装与部署配置
下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...
- Shiro的基本使用
目录 前言 Shiro的介绍 Shiro功能 补充 HelloWorld 依赖包: 示例代码 代码解析 对于shiro.ini: 对于ShiroDemo.java: 补充 一些概念 Realm 认证 ...
- 项目倒入maven 遇到的问题只有 main 了
归根结底是倒入错了: (1)首先 view->Toolbar; (2) 点击 File==>project structure 然后:在 project settings中点击 modu ...
- Unity开发实战探讨-资源的加载释放最佳策略简要心得
Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的 ...
- HTML连载24-属性选择器(下)
一.格式 标签[属性=值]:{属性:值:} 1.属性的取值是以什么开头的 attribute |= value(CSS2) attribute^=value(CSS3) 两者之间的区别:CSS2中只能 ...
- 1+x 证书 Web 前端开发 MySQL 知识点梳理
官方QQ群 1+x 证书 Web 前端开发 MySQL 知识点梳理 http://blog.zh66.club/index.php/archives/199/
- 匿名函数和for_each用法
匿名函数,C++11的 for_each 用法 #include <iostream> #include <algorithm> #include "testClas ...