当前位置: 首页 > news >正文

8086处理器 硬盘

 

操作系统会对它所管理的程序提出种种格式上的要求
比如,要求编译好的程序必须在文件的开始部分包含编译日期、针对的操作系统、程序的版本,第一条指令从哪里开始,数据段从哪里开始,有多长,代码段从哪里开始有多长等等,windows甚至建议你在程序中包含一个用于显示的图标
如果你不按它的要求来,他就会弹出文件无法执行

 

 

当计算机启动时,8086处理器的状态

       开机按钮就是和处理其的RESET引脚相连,当我们按下开机按钮的时候,会向RESET引脚发送一个信号,会使其执行硬件初始化和内部子测试,并将所有寄存器的内容初始到一个预置的操作

注意这只是8086的设置,其他的处理器不一定这样

 

当处理器加电后,寄存器内容初始到预置操作,只有CS是FFFF,其他都是0000

所以当处理器加电后,发出的第一个指令是FFFF0,它距离内存的最顶端FFFFF只有16个字节,8086就是从这个位置来开始取指令执行的

(8086只可以访问1M字节的内存,地址范围是00000-FFFFF

    而我们现在的处理器都能访问16G了)

 

在计算机中,8086处理器可以发出的地址范围是连续的,从00000一直到FFFFF

但这并不意味着被访问的内存在物理上是一个整体,事实上,这个连续的范围会被地址分配电路分成3个独立的部分

  • 00000-9FFFF  8086访问的就是我们正常内存条上的内存
  • A0000-EFFFF  8086访问的是外部设备的接口电路和接口卡(声卡、网卡、显卡等等)
  • F0000-FFFFF  BIOS

 

所以处理器初始加电时发出的第一个地址是FFFF0,是位于BIOS中

FFFF0距离内存顶端FFFFF只有16个字节,存不下几句指令,所以BIOS中FFFF0处的指令是一个跳转指令

跳转到FE05B,再开始取指执行,来进行其他的开机初始化操作

(FE05B还在BIOS中)

 

硬盘

最外面是0道

 

硬盘扇区的结构

数据512个字节!

 

读取BIOS指令完成之前,最后一道指令是从外部存储设备读取更多的指令交给处理器执行

黄色部分是BIOS读取结束时的最后一条指令

如果计算机是从硬盘启动,那么BIOS将读取硬盘主引导扇区的内容,将其加载到07C00处,然后用一条跳转指令跳到07C00处继续执行

0面0道1扇区是主引导扇区

通常主引导扇区的功能是继续从硬盘的其他部分读取更多的内容加以执行,即在主引导扇区里有一些代码从硬盘的其他部分读取内容(操作系统就是在硬盘其他部分,不在主引导扇区)

主引导扇区是512个字节

 

而如果我们把自己编写的程序放到主引导扇区,不也能让处理器执行吗?

这是可以的,并且几乎是在不依赖操作系统的情况下,让我们的程序可以执行的唯一方法

不过如果改写了硬盘的主引导扇区,那么你所安装的操作系统就会崩溃的

 

 

 

 

 

 

相关文章:

  • 虚拟机快照
  • 虚拟机克隆 将虚拟机导出为 OVF 格式
  • VMware虚拟机与主机共享文件夹
  • Python异步IO协程 (asyncio)
  • 编译原理 1.1
  • 编译原理1.2
  • 汇编语言的种类
  • Bochs虚拟机 编写主引导扇区程序并执行
  • 编译原理2.1
  • Python 函数式编程(一):高阶函数/函数名变量
  • Pycharm debug
  • MyOS(二):用Java和汇编开发一个helloworld操作系统内核
  • 仿QQ聊天室项目
  • 基于Python+Flask+Echarts的 COVID-19数据可视化项目
  • go语言相关知识
  • Android系统模拟器绘制实现概述
  • Invalidate和postInvalidate的区别
  • JavaScript创建对象的四种方式
  • js ES6 求数组的交集,并集,还有差集
  • js写一个简单的选项卡
  • opencv python Meanshift 和 Camshift
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpriteKit 技巧之添加背景图片
  • Twitter赢在开放,三年创造奇迹
  • 安卓应用性能调试和优化经验分享
  • 数据可视化之 Sankey 桑基图的实现
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 追踪解析 FutureTask 源码
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 数论-逆元
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (第27天)Oracle 数据泵转换分区表
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .NET CLR基本术语
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 反射的使用
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET6实现破解Modbus poll点表配置文件
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • /var/lib/dpkg/lock 锁定问题
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [20150321]索引空块的问题.txt
  • [20181219]script使用小技巧.txt
  • [ACM] hdu 1201 18岁生日
  • [Angular 基础] - 指令(directives)
  • [ANT] 项目中应用ANT