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

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

3天内不再提示

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

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

本文汇编程序是X86环境下的,移植其他平台可能产生错误。

一、汇编Demo解析

在前面的文章中建立了一个简单的汇编Demo,令虚拟机输出一个“Helloworld!”字符串。

org 0x7c00     ;程序起始位07c00h

此处的org是Origin的缩写,意为起源位置、起始位置。

在此前不管是桌面还是移动端,甚至是嵌入式系统的开发,工程师都是使用如C,C++Java等类似的高级语言;而撰写好程序源文件后剩下的事情便交由编译器去做。

类似于程序运行需要多少内存空间,分配多少时钟周期,程序加载位置与栈内存等琐碎的问题,我们却不太关心。这些操作都由编译器根据工程要求进行分配。

如果使用Windows环境,我们通过属性可以获取我们电脑简单参数。如:处理器,系统版本之类的。

在其中我们必然会看到这样一行:机带RAM。其实这就是通常所说的运行内存,简称:内存。(我的机器内存8G)

我们的程序编译好后是存放在硬盘中的。如果没有启用,它与其他千千万万个文件表现形式一样,也没办法区分。

如果我们唤起该程序便会产生差异。

首先CPU向硬盘发送查询命令,在硬盘中找寻该程序机器码,在获知该文件存在后硬盘向CPU报告找寻文件就绪;其次CPU向硬盘发送将该程序机器码拷贝到运行内存(硬盘太慢);内存就绪后CPU使用IP寄存器指向该地址并步进执行。

Org作用出现在第二步,硬盘将程序复制到内存哪个位置呢?org如是说:到0x7c00处!于是便复制到此。

简单来说org命令就是标志程序加载位置的,此前我们进行的程序设计没有做过这类工作完全归功于编译器的功劳。

为什么是0x7c00处呢?深究起来也并无其他高深道理,不过是为保持兼容性,硬件厂商共同约定的事情而已。但是如系统开发不遵循这样的约定却又无法正常启动。毕竟如果所有厂商都遵循的约定就会成为行业规范。

(我下一步计划设计一个RISV指令集的CPU,到时我将不遵循这个约定。那真是海阔凭鱼跃,天高任鸟飞)

在我们学习汇编写操作系统的过程中还会有其他耐人寻味的约定,当有所涉及再进行介绍。

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

从前面的介绍可知:

AX是通用寄存器,在此例中用来做数据拷贝。

CS是代码段寄存器,用来存储该段代码的入口地址。

ES的附加段寄存器,存放当前执行程序中一个辅助数据段的段地址。

DS是数据段寄存器,在此用于标示数据段其实地址。

X86架构计算机在实模式下寻址方式是:段+偏移。而这涉及到绝对地址和逻辑地址概念,这是以后的内容,再此我们先简单记住这三行是确保三个寄存器指向同一地址,以便后续进行数据操作能定位到正确位置。

这种操作可以总结为“寄存器对齐”。

call DispStr

Call是汇编语言中进行函数调用的助记符,该行意义是跳转到名为DispStr的位置并继续执行。

call DispStr
mov ax,BootMessage
mov  bp,ax                ;串地址
mov  cx,11                ;串长度
mov  ax,01301h        ;AH = 13,AL = 01h
mov  bx,000ah         ;黑底绿字
mov dl,0
int  10h                ;10h号中断
ret

上述便是DispStr主体,在程序末位我们使用BootMessage替代"Helloworld!"字符串,此时BootMessage为存储Helloworld!内存的首地址。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    6654

    浏览量

    84755
  • 汇编
    +关注

    关注

    2

    文章

    214

    浏览量

    25749
  • 虚拟机
    +关注

    关注

    1

    文章

    858

    浏览量

    27426
收藏 人收藏

    评论

    相关推荐

    计算机安全使用常识

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

    最慢Linux 计算机启动需要4小时!

    媒体消息,一名叫做Dmitry Grinberg的国外黑客制作了上图这款简单的计算机设备,据称这款设备超级无敌可怕,因为它的启动速度比人们想象中的慢了上百倍。  我们先来看看这款计算机设备的硬件配置吧
    发表于 03-30 15:57

    欧盟为计算机计算机服务器出台新生态设计要求

    、2014年7月1日和 2016年7月1日。涉及的产品包括可以直接从交流电网取电(包括外部或内部电源供应): ?● 台式计算机● 一体式计算机 ● 笔记本
    发表于 03-31 18:14

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

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

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

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

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

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

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

    计算机的开机启动过程(1) 启动过程总揽(二)详细说明1、CPU 供电按下主机的电源键后,计算机
    发表于 07-23 09:18

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

    计算机组成原理期末考试复习题,很给力的!!!一、选择题(c)1、在下列四句话中,最能准确反映计算机主要功能的是下面哪项。A.计算机可以存储大量信息B.
    发表于 07-26 07:14

    微型计算机原理及应用

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

    计算机应用

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

    微型计算机的用途

    接口技术实验大纲.《汇编语言与接口技术》实验指导河南大学计算机与信息工程学院概 述学习微机接口技术,实践是非常重要的环节。我们学习微型计算机不仅要掌握其基本原理、基本概念、基本方法,更重
    发表于 09-10 07:32

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

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

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

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

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

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

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

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