0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机启动的细节与汇编Demo的拆解2

jf_78858299 来源:酸奶盖子 硬件底裤 作者:酸奶盖子 硬件底裤 2023-02-01 15:53 次阅读

第2行为将BootMessage复制给AX。

BP为指针寄存器,第3行将指针寄存器指向字符串起始地址。指针寄存器不能被直接操作,所以依靠AX寄存器进行值传递。

CX为计数器寄存器,11为“Helloworld!”字符串长度。

mov  ax,01301h    ;AH  = 13,AL = 01h

该行是本函数的核心,是向屏幕输出字符的关键。

BIOS通过软件中断接收执行功能的请求。用nnh调用特定类型的中断服务函数。

例如10h用于显示服务 - 由BIOS或操作系统设定以供软件调用:

AH=00h 设定显示模式;

AH=01h 设定游标形态;

AH=02h 设置游标位置;

AH=03h 获取光标位置与形态;

AH=04h 获取光标位置;

AH=05h 设置显示页;

AH=06h 清除或滚动栏画面(上);

AH=07h 清除或滚动栏画面(下);

AH=08h 读取游标处字符与属性;

AH=09h 更改游标处字符与属性;

AH=0Ah 更改游标处字符;

AH=0Bh 设定边界颜色;

AH=0Eh 在TTY模式下写字符;

AH=0Fh 获取当前显示模式;

AH=13h 写字符串。

AL寄存器一共有8位,但是只使用低2位,高6位并不使用:

如果AL=0,表示目标字符串仅仅包含字符,属性在BL中包含,不移动光标。

如果AL=1,表示目标字符串仅仅包含字符,属性在BL中包含,移动光标。

如果AL=2,表示目标字符串包含字符和属性,不移动光标。

如果AL=3,表示目标字符串包含字符和属性,移动光标。

mov  bx,000ah     ;黑底绿字

BX寄存器可分为高八位和低八位。

BH为页号,BL主要是用来定义一些颜色属性格式:

若 BIT7 = 1 ,背景闪烁。

若 BIT3 = 1 ,前景色高亮显示。

BIT4~BIT6 表示背景色。

BIT0~BIT2 表示前景色。

BH=00,BL=0Ah 即页号为0,不闪烁,背景色为黑色,前景色高亮显示,前景色为绿色

RET是return缩写,标示该函数调用结束并返回。

times 510 -  ($-$$)  db  0     ;生成一串512字节二进制代码
dw  0xaa55     ;结束标志

这两行是编写引导扇区的规范。

理解主引导扇区前需要先阐述什么是扇区。在现代冯诺依曼结构计算机中,存储器一般由机械硬盘与内存担任。

机械硬盘内部由若干盘片、可移动读写头、电机、数据传输接口以及一个控制电路组合而成。

磁盘盘片磁道上覆盖着导磁物质,读写头是一枚电磁铁悬空在盘片上方距离0.1μm~0.5μm处,通过变化的电流产生变化的磁场改变磁道上面的导磁物质极性记录数据,通过磁生电读取盘片数据。

一个盘片有两个磁头,正面盘片磁头编号0,反面为1,若有多个盘片磁头编号便会继续累加。磁道是是盘片内同心圆,在盘片正反两面的磁道构成一个柱面,从0开始编号,最边缘为0,编号往内逐步累加。每个磁道以512字节划分为若干扇区,编号由1开始。

硬件厂商约定MBR分区位于0面0道1扇区,占512字节储存主引导程序。计算机上电后BIOS会从主硬盘0面0道1扇区寻找并执行MBR程序,最终通过MBR拉起操作系统。

第1行中表示当前位置,$表示程序起始位置。一个扇区512字节,该表达式的意义就是将这个扇区除了写有代码的区域外全部填写0。并留下2个字节位置。

标准的MBR结构如下图,这也就解释了第2行代码的0xaa55了,它是MBR分区的结束标志!

二、Demo机器码解析

如无意外,经过编译后我们将得到一个.bin文件,如果是Windows下使用Vscode作为编译环境,在编辑器中安装Hex Editor扩展就能正常显示。而Linux使用Vim/Vi就能打开。

作为该项目参考书作者李忠老师也开发了一个小工具,如有必要可以在http://www.lizhongc.com/index.php/91.html下载使用。
现在我的电脑是云主机,限于现实环境将使用Vscode进行讲解。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7428

    浏览量

    87727
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    25904
  • 虚拟机
    +关注

    关注

    1

    文章

    908

    浏览量

    28107
收藏 人收藏

    评论

    相关推荐

    计算机安全使用常识

    计算机安全使用常识 (1)使用符合额定电压的电源。电压高于额定电压会烧毁硬件,低于额定电压计算机不能正常启动或系统运行不正常,甚至也会烧毁硬件。(2)正确开关
    发表于 03-10 12:10

    什么是微型计算机?微型计算机有什么用处?

    汇编语言是什么?什么是微型计算机?微型计算机有什么用处?
    发表于 07-16 09:59

    什么是计算机系统、计算机硬件和计算机软件?

    第一章 计算机系统概论1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要?解:P3计算机系统:由
    发表于 07-22 09:06

    计算机组成原理 精选资料分享

    计算机组成原理第一章 计算机系统概述1.1 计算机系统简介计算机系统:硬件、软件软件:系统软件、应用软件计算机系统的层次结构(由高到低):高
    发表于 07-23 06:15

    计算机开机启动过程详解 精选资料分享

    计算机的开机启动过程(1) 启动过程总揽(二)详细说明1、CPU 供电按下主机的电源键后,计算机开始启动,为主板部分芯片和CPU进行供电。主
    发表于 07-23 09:18

    计算机组成期末复习 精选资料分享

    机D.计算机可实现高速运算(c)2计算机硬件能直接执行的只能是下面哪项。A.符号语言 B.汇编语言C.机器语言 D.机器语言和汇编语言(c
    发表于 07-26 07:14

    微型计算机原理及应用

    前言微机原理主要内容包括微型计算机体系结构、8088微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。微机原理接口技术是一门实践性强的学科,不但要求较高的理论水平,而且还要求有实际的动手能力。这次项目设计的主
    发表于 09-10 07:38

    计算机应用

    1、第一台计算机:1946年2月14日,在美国宾西尼亚大学的莫尔电机学院,世界第一台现代电子计算机“埃尼阿克”ENIAC诞生,重达30t,在1s内能进行5000次加法运算和500次乘法运算。2
    发表于 09-10 08:17

    5. 电子计算机的应用,计算机应用基础(试卷版)5|计算机应用基础试卷 精选资料分享

    计算机应用基础5一、单选题1、第二代计算机不仅能够处理文字,而且能够方便处理______。A:视频信息B:图形信息C:动画信息D:语音信息答案: B2、电子计算机按规模划分,可以分为_
    发表于 09-13 09:08

    计算机组成原理与汇编语言程序设计

    计算机组成原理与汇编语言程序设计是为中央电大计算机组成原理与汇编语言程序设计课程编写的教材。在开始学习本书之前,请大家务必先认真阅读这篇前言,它将告诉你本课
    发表于 10-21 17:56 0次下载
    <b class='flag-5'>计算机</b>组成原理与<b class='flag-5'>汇编</b>语言程序设计

    计算机组成原理与汇编语言习题一

    计算机组成原理与汇编语言习题一   硬盘低格格式化是对硬盘最彻底的初始化方式,经过低格后的硬盘,原来保护的数据将全部丢失
    发表于 04-15 16:16 532次阅读

    计算机学习教程之指令系统与汇编语言程序设计课件免费下载

    本文档的主要内容详细介绍的是计算机学习教程之指令系统与汇编语言程序设计课件免费下载包括了:1.汇编语言程序设计,2.程序设计举例,
    发表于 01-03 08:00 0次下载

    构建 4 位计算机汇编语言和汇编器(第 2 部分)

    一旦我们构建了一台计算机,下一步就是开发一种汇编语言,然后是一个可以汇编我们程序的汇编器。   在我 之前的专栏 中,我们介绍了在计算机内存
    发表于 08-01 17:52 844次阅读
    构建 4 位<b class='flag-5'>计算机</b>:<b class='flag-5'>汇编</b>语言和<b class='flag-5'>汇编</b>器(第 <b class='flag-5'>2</b> 部分)

    计算机启动细节汇编Demo拆解1

    本文汇编程序是X86环境下的,移植其他平台可能产生错误。 一、汇编Demo解析 在前面的文章中建立了一个简单的汇编Demo,令虚拟机
    的头像 发表于 02-01 15:53 775次阅读
    <b class='flag-5'>计算机</b><b class='flag-5'>启动</b>的<b class='flag-5'>细节</b>与<b class='flag-5'>汇编</b><b class='flag-5'>Demo</b>的<b class='flag-5'>拆解</b>1

    计算机启动细节汇编Demo拆解3

    本文汇编程序是X86环境下的,移植其他平台可能产生错误。 一、汇编Demo解析 在前面的文章中建立了一个简单的汇编Demo,令虚拟机
    的头像 发表于 02-01 15:53 668次阅读