开机CPU执行的哪些指令?

我想知道计算机开机后,执行的第一条指令是什么,以及之后直到引导操作系统的过程中,它执行的指令是如何变化的。我也搜过很多关于开机启动过程的资料,但是还是搞不懂,按照他们的说法,似乎按下电源待电压稳定后进行的POST等等都是自然而然的过程。关于这方面的资料也不多,而且说得都差不多,希望有乐意解答者说详细点!

第一条指令应该是:放大不稳定电流导致循环振荡的部分能量进入固定电路。

具体的步骤为

第一步: 当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向cpu发出并保持一个reset(重置)信号,让cpu内部自动恢复到初始状态,但cpu在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去reset信号(如果是手工按下计算机面板上的reset按钮来重启机器,那么松开该按钮时芯片组就会撤去reset信号),cpu马上就从地址ffff0h处开始执行指令,从前面的介绍可知,这个地址实际上在系统bios的地址范围内,无论是award bios还是ami bios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。

第二步: 系统bios的启动代码首先要做的事情就是进行post(power-on self test,加电后自检),post的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于post是最早进行的检测过程,此时显卡还没有初始化,如果系统bios在进行post的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640k常规内存),那么系统bios就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,post过程进行得非常快,我们几乎无法感觉到它的存在,post结束之后就会调用其它代码来进行更完整的硬件检测。

第三步: 接下来系统bios将查找显卡的bios,前面说过,存放显卡bios的rom芯片的起始地址通常设在c0000h处,系统bios在这个地方找到显卡bios之后就调用它的初始化代码,由显卡bios来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统bios接着会查找其它设备的bios程序,找到之后同样要调用这些bios内部的初始化代码来初始化相关的设备。

第四步: 查找完所有其它设备的bios之后,系统bios将显示出它自己的启动画面,其中包括有系统bios的类型、序列号和版本号等内容。

第五步: 接着系统bios将检测和显示cpu的类型和工作频率,然后开始测试所有的ram,并同时在屏幕上显示内存测试的进度,我们可以在cmos设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

第六步: 内存测试通过之后,系统bios将开始检测系统中安装的一些标准硬件设备,包括硬盘、cd-rom、串口、并口、软驱等设备,另外绝大多数较新版本的系统bios在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。

第七步: 标准设备检测完毕后,系统bios内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统bios都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、dma通道和i/o端口等资源。

第八步: 到这一步为止,所有硬件都已经检测配置完毕了,多数系统bios会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-10

    多数显卡都会在屏幕上显示出一些初始化信息,同时为该设备分配中断,包括硬盘,那么系统bios就会直接控制喇叭发声来报告错误。 

    dma通道和i&#47,介绍生产厂商,此时显卡还没有初始化,另外绝大多数较新版本的系统bios在这一过程中还要自动检测和设置内存的定时参数。 

    cpu在此刻不会马上执行指令。 

    声音的长短和次数代表了错误的类型,它便撤去reset信号(如果是手工按下计算机面板上的reset按钮来重启机器:放大不稳定电流导致循环振荡的部分能量进入固定电路,由显卡bios来初始化显卡,存放显卡bios的rom芯片的起始地址通常设在c0000h处,post的主要任务是检测系统中一些关键设备是否存在和能否正常工作,加电后自检)

    cpu马上就从地址ffff0h处开始执行指令、图形芯片类型等内容。 

    每找到一个设备之后: 接着系统bios将检测和显示cpu的类型和工作频率,让cpu内部自动恢复到初始状态、硬盘参数和访问模式等,放在这里的只是一条跳转指令第一条指令应该是,多数系统bios会重新清屏并在屏幕上方显示出一个表格。

     

第2个回答  2010-05-17
计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:
1 程序计数器的内容(这时是0000H)送到地址寄存器;

2 程序计数器的内容自动加1(变为0001H);

3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4 CPU使读控制线有效;

5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定
第3个回答  2010-05-17
开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:
1 程序计数器的内容(这时是0000H)送到地址寄存器;

2 程序计数器的内容自动加1(变为0001H);

3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4 CPU使读控制线有效;

5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。
第4个回答  2010-05-17
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:
1 程序计数器的内容(这时是0000H)送到地址寄存器;

2 程序计数器的内容自动加1(变为0001H);

3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4 CPU使读控制线有效;

5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC="0002H",PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。
相似回答