第三章计算机系统引导过程分 1.docx

上传人:b****1 文档编号:20105315 上传时间:2023-04-25 格式:DOCX 页数:64 大小:134.37KB
下载 相关 举报
第三章计算机系统引导过程分 1.docx_第1页
第1页 / 共64页
第三章计算机系统引导过程分 1.docx_第2页
第2页 / 共64页
第三章计算机系统引导过程分 1.docx_第3页
第3页 / 共64页
第三章计算机系统引导过程分 1.docx_第4页
第4页 / 共64页
第三章计算机系统引导过程分 1.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

第三章计算机系统引导过程分 1.docx

《第三章计算机系统引导过程分 1.docx》由会员分享,可在线阅读,更多相关《第三章计算机系统引导过程分 1.docx(64页珍藏版)》请在冰豆网上搜索。

第三章计算机系统引导过程分 1.docx

第三章计算机系统引导过程分1

第三章、计算机系统引导过程分析

第一节计算机加电自测(POST)

计算机在工作之前,必须检测并初始化所有系统部件,并将操作系统引导在内存中。

系统检测和初始化过程一般由ROMBIOS控制。

加电自测及初始化过程一般简称为POST(Power-onSelfTest)。

3.1.1计算机的启动方式:

1)系统加电(即开启系统):

BIOS跳至由处理器复位向量(F:

0000h)所指的入口点,执行所有POST测试和初始化工作。

POST调用BIOSINT19h引导系统。

2)通过硬件复位键(RESET键)复位系统:

(同上)。

3)通过按++三组合键(热启动):

INT09h键盘硬件中断服务例程将控制权转给BIOSPOST。

对64K以上的内存不作测试和初始化,但其他POST测试和初始化工作一律要执行。

然后POST调用BIOSINT19h引导系统。

3.1.2POST过程:

POST过程的初始化和自检功能是紧密联系的,一般可将这些功能分为二类:

与中心系统硬件有关的功能;与配置和非系统硬件有关的功能。

中心硬件POST测试失败一般引起严重的系统板错误,并产生喇叭信号。

在进行其他POST测试之前,中心硬件功能应正常,最重要的中心硬件最先测试和初始化。

POST测试和初始化中心硬件的顺序如下:

在测试和初始化完之后,POST验证存储在CMOSRAM中的系统配置数据是否与实际硬件一致。

然后,POST测试并初始化64K以上内存、键盘、软盘、硬盘驱动器、CRT控制器和其他非系统板硬件。

POST测试和

初始化配置与非系统硬件的顺序如下:

至此,计算机的加电自测完成。

加电自测过程中可能出现的故障以及解决的方法在第三章中将专题讨论,本章不再熬述。

第二节INT19h引导系统

在加电自测完成之后,计算机将控制权交给INT19h,由INT19h引导并加载操作系统。

在分析讨论INT19h工作过程之前,我们首先了解获得INT19h源程序的方法。

3.2.1获得INT19h源程序的方法:

由于计算机在加栽操作系统的过程中,INT19h的入口参数被多次修改(如图3-1),因而原INT19h被包裹上了一层或多层外壳。

因此原始的INT19h入口参数不能简单地从内存0000:

0064H处获得,而必须去掉它的所有外壳才能获得。

INT19h源程序的方法很多,下面以“采用DEBUG.EXE获得INT19h源程序”的方法为例,具体给大家介绍。

第一步、让计算机按缺省方式启动:

将启动盘根目录下的CONFIG.SYS和AUTOEXEC.BAT改名后重新启动即可。

之所以要按缺省方式启动,是因为按缺省方式启动时,INT19h被修改次数最少,也最容易找到原始INT19h的入口。

第二步、找到当前INT19h的入口地址:

INT19h的入口地址位于内存0000:

0064H处,用DEBUG的D命令即可显示。

第三步、获得并分析该层源程序:

采用文件重定位方法可获得源程序。

源程序分析举例如下:

0070:

00001809172301EA9308-7000000000000000...#....p.......

0070:

001000007C0323010000-0000000070000102..|.#.......p...

0070:

002000E8003500700013-80F5060007434F4E...5.p.......CON

0070:

00F070000080F5063307-434F4D3420202020p.....3.COM4

0070:

010010C81900C013979F-00F01559F800F019...........Y....

0070:

0110F2E600F01B53FF00-F04E03700000FFF8.....S...N.p....

0070:

06300000000000000000-0000FFFFFFFFFC01................

0070:

06400102C3E200F008A5-FE00F00987E900F0................

0070:

06500A73F700F00B73F7-00F00C73F700F00D.s....s....s....

0070:

066073F700F00E57EF00-F0701EF700F07273s....W...p....rs

0070:

0670F700F07373F700F0-7473F700F07645E8...ss...ts...vE.

0070:

068000F07765E800F054-03B8031F098309E7..we...T........

0070:

06900900000000000000-0000000000000000................

0070:

07FB0EPUSHCS

0070:

07FC1FPOPDS

0070:

07FD8E061A00MOVES,[001A]

0070:

0801B90500MOVCX,0005

0070:

0804BE0001MOVSI,0100

0070:

0807ACLODSB恢复10、13、15、19、1B中断向量

0070:

080898CBW

0070:

0809D1E0SHLAX,1

0070:

080BD1E0SHLAX,1

0070:

080D8BF8MOVDI,AX

0070:

080FADLODSW

0070:

0810ABSTOSW

0070:

0811ADLODSW

0070:

0812ABSTOSW

0070:

0813E2F2LOOP0807

0070:

0815803E400600CMPBYTEPTR[0640],00

0070:

081A7422JZ083E

0070:

081CBE4106MOVSI,0641

0070:

081FB90E00MOVCX,000E

0070:

0822ACLODSB

0070:

082398CBW

0070:

08248BF8MOVDI,AX

0070:

0826ADLODSW恢复02、08、09、0A、0B、0C、0D、0E、72、

0070:

08278BD8MOVBX,AX73、74、76、77中断向量

0070:

0829ADLODSW

0070:

082A83FBFFCMPBX,-01

0070:

082D740DJZ083C

0070:

082F3DFFFFCMPAX,FFFF

0070:

08327408JZ083C

0070:

083403FFADDDI,DI

0070:

083603FFADDDI,DI

0070:

083893XCHGBX,AX

0070:

0839ABSTOSW

0070:

083A93XCHGBX,AX

0070:

083BABSTOSW

0070:

083CE2E4LOOP0822

0070:

083E803E0D0000CMPBYTEPTR[000D],00

0070:

08437403JZ0848

0070:

0845E83000CALL0878

0070:

0848CD19INT19

第四步、获得并分析原INT19h源程序:

通过第三步分析可知,原INT19h入口的位置(F000:

E6F2H)。

采用文件重定位方法可获得源程序。

3.2.2INT19h中断处理程序及分析:

由于原始INT19h的内容存在于计算机的BIOS中,因此INT19h的内容与BIOS的版本和生产厂家有关,不同版本和生产厂家BIOS的INT19h内容不同。

但是、不管是那个版本或生产厂家BIOS的INT19h在加栽操作系统时,所完成的任务是相同或基本相同的。

下面举例分析:

例一、MRBIOS(c)1988INT19h分析:

F000:

E6F2E9151BJMP020A

......

F000:

020AB80000MOVAX,0000

F000:

020D8ED8MOVDS,AX

F000:

020FB80000MOVAX,0000

F000:

02128EC0MOVES,AXDS,ES←0

F000:

0214FACLI(ClearInterruptenableFlag)

F000:

021526ES:

将41H中断向量置为F000:

283H

F000:

0216C70604018302MOVWORDPTR[0104],0283

F000:

021C26ES:

其中,41H中断为硬盘参数中断

F000:

021D8C0E0601MOV[0106],CS

F000:

022126ES:

将1EH中断向量置为F000:

278H

F000:

0222C70678007802MOVWORDPTR[0078],0278

F000:

022826ES:

其中,1EH中断为软盘参数中断

F000:

02298C0E7A00MOV[007A],CS

F000:

022DFBSTI

F000:

022EB90300MOVCX,0003置读次数

F000:

0231B200MOVDL,00置A驱

F000:

0233E82100CALL0257读0头0道1扇区引导记录到0:

7C00H

F000:

02367205JB023D读失败,转023D

F000:

0238EA007C0000JMP0000:

7C00执行0:

7C00H的引导记录(软盘)

F000:

023DB90300MOVCX,0003置读次数

F000:

0240B280MOVDL,80置硬盘驱号

F000:

0242E81200CALL0257读0头0道1扇区引导记录到0:

7C00H

F000:

0245720EJB0255读失败,执行ROM-BASIC(INT18H)

F000:

024726ES:

引导记录模块最后一个字为AA55H

F000:

0248813EFE7D55AACMPWORDPTR[7DFE],AA55

F000:

024E7505JNZ0255不是,转INT18H

F000:

0250EA007C0000JMP0000:

7C00成功,执行引导记录(硬盘)

F000:

0255CD18INT18ROM-BASIC

●复位驱动器及读引导记录子程序

F000:

0257B400MOVAH,00复位磁盘

F000:

0259CD13INT13

F000:

025B7213JB0270复位失败,转270H

F000:

025DB402MOVAH,02复位成功,置读扇区功能号

F000:

025FB001MOVAL,01置要读的扇区数

F000:

0261BB007CMOVBX,7C00读到内存0:

7C00H(ES:

BX指标)

F000:

026451PUSHCX

F000:

0265B500MOVCH,00置磁道号(柱面号)

F000:

0267B101MOVCL,01置要读首扇区号

F000:

0269B600MOVDH,00置要读磁头号

F000:

026BCD13INT13

F000:

026D59POPCX成功,反回

F000:

026E7307JNB0277

F000:

027080FC80CMPAH,80失败,超时错?

F000:

0273E0E2LOOPNZ0257未够3次,继续

F000:

0275F9STC

F000:

0276C3RET

F000:

0277C3RET

例二、AMIBIOS(c)1993INT19h分析:

F000:

E6F2E93CA0JMP8731

......

F000:

873133C0XORAX,AX

F000:

87338EC0MOVES,AX

F000:

8735FACLI

F000:

8736FCCLD

F000:

8737B8C7EFMOVAX,EFC7

F000:

873ABF7800MOVDI,0078

F000:

873DABSTOSW

F000:

873EB800F0MOVAX,F000

F000:

8741ABSTOSW修改1E中断指向F000:

EFC7

F000:

8742BF007CMOVDI,7C00

F000:

8745B90001MOVCX,0100

F000:

8748F3REPZ

F000:

8749ABSTOSW0000:

7C00---0000:

7DFF填F000

F000:

874AFBSTI

F000:

874B33D2XORDX,DX

F000:

874D33C0XORAX,AX

F000:

874FCD13INT13软驱复位

F000:

8751E83677CALLFE8A判断操作系统启动顺序是C:

A:

或A:

C:

F000:

87542406ANDAL,06

F000:

87567431JZ8789启动顺序是C:

A:

则转移

F000:

8758E86900CALL87C4读软盘引导记录

F000:

875BE8A026CALLADFE判断是否读成功

F000:

875E734CJNB87AC成功则转移

F000:

8760E8CB64CALLEC2E判断是否有硬盘

F000:

8763A808TESTAL,08

F000:

87657512JNZ8779无硬盘则转移

F000:

8767B280MOVDL,80

F000:

8769E85800CALL87C4读硬盘主引导记录

F000:

876CE30BJCXZ8779

F000:

876E7209JB8779读失败则转移

F000:

877026ES:

F000:

8771813EFE7D55AACMPWORDPTR[7DFE],AA55比较硬盘主引导记录标志

F000:

87777443JZ87BC标志存在则转移

F000:

8779CD18INT18ROM-BASIC

......

F000:

8789E8A264CALLEC2E判断是否有硬盘

F000:

878CA808TESTAL,08

F000:

878E7512JNZ87A2

F000:

8790B280MOVDL,80

F000:

8792E82F00CALL87C4读硬盘主引导记录

F000:

8795E30BJCXZ87A2

F000:

87977209JB87A2

F000:

879926ES:

F000:

879A813EFE7D55AACMPWORDPTR[7DFE],AA55

F000:

87A0741AJZ87BC

F000:

87A2B200MOVDL,00

F000:

87A4E81D00CALL87C4读软盘引导记录

F000:

87A7E85426CALLADFE判断是否读成功

F000:

87AA72CDJB8779

F000:

87ACBF007CMOVDI,7C00

F000:

87AF26ES:

F000:

87B08B05MOVAX,[DI]

F000:

87B2B98000MOVCX,0080

F000:

87B5FACLI

F000:

87B6FCCLD

F000:

87B7F3REPZ

F000:

87B8AESCASB

F000:

87B9FBSTI

F000:

87BAE3BDJCXZ8779判断软盘引导记录的存在性

F000:

87BCE84B64CALLEC0A

F000:

87BFEA007C0000JMP0000:

7C00控制权交给主引导记录或引导记录

●复位驱动器及读引导记录子程序

F000:

87C453PUSHBX

F000:

87C5B90400MOVCX,0004

F000:

87C8BB007CMOVBX,7C00

F000:

87CB51PUSHCX

F000:

87CCB90100MOVCX,0001

F000:

87CFB80102MOVAX,0201

F000:

87D2CD13INT13

F000:

87D459POPCX

F000:

87D5730CJNB87E3

F000:

87D750PUSHAX

F000:

87D833C0XORAX,AX

F000:

87DACD13INT13

F000:

87DC58POPAX

F000:

87DDD0E4SHLAH,1

F000:

87DF7202JB87E3

F000:

87E1E2E8LOOP87CB

F000:

87E35BPOPBX

F000:

87E4C3RET

●通过读成功与否给BH赋初值

F000:

ADFEB700MOVBH,00

F000:

AE00E306JCXZAE08如果读完4次(CX=0)则转移

F000:

AE02B701MOVBH,01

F000:

AE047303JNBAE09读成功则转移

F000:

AE06B702MOVBH,02

F000:

AE08F9STC进位标志位置1(CF=1)

F000:

AE09C3RET

F000:

EC2EB08EMOVAL,8E

F000:

EC30E8AEFFCALLEBE1

F000:

EC33A8C0TESTAL,C0

F000:

EC35C3RET

F000:

EBE1E670OUT70,AL

F000:

EBE3E300JCXZEBE5

F000:

EBE5E300JCXZEBE7

F000:

EBE7E471INAL,71

F000:

EBE9C3RET

第三节硬盘主引导记录

硬盘的主引导记录与计算机硬件无关,但与所使用的操作系统种类以及该操作系统的版本有密切的关系。

DOS操作系统与XENIX操作系统下的硬盘主引导记录不一样;DOS3.30操作系统与DOS6.20操作系统下的硬盘主引导记录也有一些区别。

即使如此,但它们所完成的功能与作用则是基本相同的。

因此,我们在学习硬盘主引导记录时,只需分析其一种即可触类旁通,达到学习的目的。

3.3.1获得主引导记录的方法:

获得主引导记录的方法很多也很简单。

下面仅以采用DOS提供的DEBUG.EXE程序获得硬盘主引导记录的方法为例,简单介绍其方法。

C:

\>DEBUG

-a

xxxx:

0100movax,0201ah为功能号al为读扇区数

xxxx:

0103movbx,0200es:

bx为所读扇区在内存中的存放位置

xxxx:

0106movcx,0001cx为所读磁道号和扇区号

xxxx:

0109movdx,0080dh为所读磁头号dl为所读磁盘的盘符

xxxx:

010Cint13h

xxxx:

010Eint3h设置断点

xxxx:

010F

-g

注:

INT13h的具体使用方法请查阅有关书籍

3.3.2硬盘主引导记录分析(DOS6.20):

硬盘主引导记录的功能是读出硬盘自举分区的BOOT程序,并把控制权转移到分区BOOT程序。

xxxx:

7C00FACLI

xxxx:

7C0133C0XORAX,AX

xxxx:

7C038ED0MOVSS,AX

xxxx:

7C05BC007CMOVSP,7C00重置堆栈

xxxx:

7C088BF4MOVSI,SP

xxxx:

7C0A50PUSHAX

xxxx:

7C0B07POPESES=0

xxxx:

7C0C50PUSHAX

xxxx:

7C0D1FPOPDSDS=0

xxxx:

7C0EFBSTI

xxxx:

7C0FFCCLD

xxxx:

7C10BF0006MOVDI,0600

xxxx:

7C13B90001MOVCX,0100

xxxx:

7C16F2REPNZ移动引导记录从0000:

7c00到0000:

0600

xxxx:

7C17A5MOVSW

xxxx:

7C18EA1D060000JMP0000:

061D跳转到

xxxx:

7C1DBEBE07MOVSI,07BE

xxxx:

7C20B304MOVBL,04

xxxx:

7C22803C80CMPBYTEPTR[SI],80判断0000:

07be是否为活动分区

xxxx:

7C25740EJZ7C35是活动分区则转移

xxxx:

7C27803C00CMPBYTEPTR[SI],00

xxxx:

7C2A751CJNZ7C48

xxxx:

7C2C83C610ADDSI,+10

xxxx:

7C2FFECBDECBL

xxxx:

7C3175EFJNZ7C22

xxxx:

7C33CD18INT18进入ROM-BASIC

xxxx:

7C358B14MOVDX,[SI]

xxxx:

7C378B4C02MOVCX,[SI+02]

xxxx:

7C3A8BEEMOVBP,SI

xxxx:

7C3C83C610ADDSI,+10

xxxx:

7C3FFECBDECBL

xxxx:

7C41741AJZ7C5D分区表正常

xxxx:

7C43803C00CMPBYTEPTR[SI],00

xxxx:

7C4674F4JZ7C3C

xxxx:

7C48BE8B06MOVSI,068B

xxxx:

7C4BACLODSB

xxxx:

7C4C3C00CMPAL,00

xxxx:

7C4E740BJZ7C5B

xxxx:

7C5056PUSHSI

xxxx:

7C51BB0700MOVBX,0007用白色

xxxx:

7C54B40EMOVAH,0E于屏幕

xxxx:

7C56CD10INT10写提示

xxxx:

7C5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1