第三天、BootSector 来了

今天正式开始照猫画虎了——对着书抄代码。从Boot Sector 开始:

; PC通电启动后,由内存地址 FFFF:0000(ROM中) 处开始,执行一个 jump 指令,
; 跳转到另一个 ROM 位置开始自检(RAM、keyboard、显示器、软硬磁盘等)。
; 之后控制权转移给 ROM 中的启动程序,将引导盘上的 Boot Sector 读入内存绝对位置 07C00h 处。
; 然后 JUMP 到 0X7C00 处,开始后运行 Boot Sector 程序。

	org 07c00h		; org 指令告诉编译器本程序将要被加载到内存的起始地址,
					; 编译器会把本程序中所有用到的段内偏移地址自动加上 org 后跟随的数值。
					; org 指令指示地址偏移调整是编译期概念,只影响内存寻址指令的编译,
					; 编译产生的程序已经加上偏移量。

	mov ax, cs
	mov ds, ax
	mov es, ax

	call DispStr
	jmp $

	; 显示字符串
DispStr:
	mov ax, BootMessage	; 变量和标签无区别,无[]为地址,有[]为值
	mov bp, ax			; es:bp = 字符串地址
	mov cx, 16			; cx = 字符串长度
	mov ax, 1301h		; ah = 功能号(13h,在Teletype模式下显示字符串),
						; al = 显示方式(01h,显示属性在BL中,光标跟随移动)
	mov bx, 000Ch		; bh = 页号(0h), bl =(AL = 0、1时)显示属性(0Ch,黑底红字)
	mov dx, 0			; DH、DL = 起始行、列
	int 10h
	ret

BootMessage:
	db ‘Hello, World!‘, 0
	times 510 - ($ - $$) db 0	; $ = 编译后本行的地址,$$ = 编译后本节的起始地址
								; times = 重复
	dw 0xAA55					; Boot Sector 最后2个字节为 0xAA55,表示这是启动程序

编译,用昨天写的小程序覆写,虚拟机加载启动。。。。。。成功!

时间: 2024-10-16 10:03:08

第三天、BootSector 来了的相关文章

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas

三百六十度全景图如何拍摄?

三百六十度全景图如何拍摄?随着全景技术的发展,全景拍摄也成为了一种十分新潮的摄影方式.全景摄影也有很多学问,而且随着全景照片的用途越来越多,拍摄全景的设备也越来越多.今天我们就介绍几种十分另类的360全景图拍摄方法,这些酷雷曼360全景图拍摄方法让你大开眼界. 工具/原料 相机 鱼眼镜头 云台 三角支架 方法/步骤 1 吊锤辅助360全景图拍摄方法 吊线保证拍摄时相机以节点旋转,使用吊线进行全景拍摄线不要太长,50CM以内比较容易控制,有时也到一米多在胸口位置进行拍摄,重锤容易晃动,很难对准.吊

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

三件软件作品评价

先交代三件软件作品的相关资料.   软件一 软件二 软件三 软件名称 蜗牛词典APP 24点小游戏APP 物理实验网站 学校 2017集美大学1412软工实践  集美大学1411 北京航天航空大学计算机学院 团队名称 SNS1412 hexagon 软剑攻城队 团队博客地址 http://www.cnblogs.com/jmu-sns/ http://www.cnblogs.com/24app/ http://www.cnblogs.com/buaase/ Git地址 https://codin

MVC4 自定义错误页面(三)

一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.Web节点下加上 <customErrors mode="On"  defaultRedirect="~/Shared/Error" /> 翻阅一些大神写的博客,在他们的博客中指出defaultRedirect是指向错误页面的URL,可是经过本人测试的时候,发现

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

微信 小程序布局 左右三区块

/* 3三区块部分 *************/ .wear-diamonds{ display: flex; width: 100%; height: 300rpx; } .wear-diamonds>view{ width: 50%; height:100%; border: 1px solid black; } .diamonds-right>view{ width: 100%; height: 50%; border: 1px solid #000; } //-------------

Redis实战(三)Redis主从复制

从架构 1.主从架构图 2.通过命令 mkdir redisCluster创建redis集群文件夹 3.通过命令mkdir 6380   mkdir 6381   mkdir 6382在redisCluster文件夹下创建三个文件夹 4.通过以下命令将redis.conf分别拷贝到6380.6381. 6382文件夹下 cp /usr/local/redis/redis-3.0.2/redis.conf  ./6380 cp /usr/local/redis/redis-3.0.2/redis.

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定