灭罪师北泽野身世:关于还原精灵的问题!高手进!!

来源:百度文库 编辑:高校问答 时间:2024/04/28 01:59:40
小弟新装XP系统,一切正常!
当最后装还原精灵的时候,先安装网络还原精灵2.2安装成功重启也没问题。重启后进系统再重启动就提示还原精灵试用以过期!换安装还原精灵5.0,安装重启后,提示无法读取。

请高手教我如何解决!!!
不需要其他的软件,包括冰点。我想要把这问题解决!!

还原精灵实战
一、软件系统的保护与还原
长期以来,学校机房、网吧等人员流动大,机器很多的场所,系统管理员的工作都非常烦琐,经常要重新安装系统、查杀病毒等。如何对硬盘中现有的操作系统和软件进行保护和还原就成了一个课题。
系统的保护和还原的方法从原理上来说主要分三类,一是保护,二是还原,三称为虚拟还原。
1.系统保护
系统保护,就是防止硬盘的重要信息被破坏,防止注册表改写和文件I/O操作等。用户被置于一个预先设置好的环境中,只能干此软件系统允许你干的事情。相对而言,这种方法对用户的约束太多,局限很大,对操作系统进程的干预也比较多,运行效率有一定影响。基于这种思路的软件代表有:美萍、网管大师、方竹等等。另外,通过手工修改注册表隐藏一些系统功能也属于这种方法。
系统保护,好比筑堤抗洪,“千里之堤,毁于蚁穴”,系统漏洞可谓防不胜防,事实上水平高点的用户都有办法饶过它的防护。另外,操作系统升级带来系统内部一些功能变化,这些软件也必须做相应修改,很被动。总的来说,这类软件从思路来说是一种被动防御的姿态,效果不会太理想。
系统保护只是对一些操作进行了限制,硬盘上的数据是动态变化的,它不能根据需要恢复到某一个时点的系统内容。
2.系统还原
系统还原,就是预先将系统内容做好全部或部分备份,当系统崩溃或者混乱需要重新安装的时候,将原来的备份进行恢复,将系统内容还原到备份那个时点的内容。这种方法不干预用户的操作,不干扰系统进程。基于还原最简单也最原始的方法是用一个同样大的硬盘一比一地将系统克隆或拷贝下来。更好一点的方法是将系统分区(一般是C盘)用GHOST或WINIMAGE等做个镜像,保存到另外的硬盘或分区上。

系统还原比较于系统保护,虽然有诸多优点,但它的缺点也很明显:需要占用很大硬盘空间,需要大量的还原时间。这些缺点实际上阻碍了它在实际工作中的应用范围,除了家庭用户和一些重要部门对重要数据用这个方法以外,学校和网吧等极少采用这种“笨”办法。
系统还原的特点是可以根据需要将系统还原到备份那个时点的内容。
3.虚拟还原
虚拟还原的工作原理实际上是基于系统保护的,但它的保护做在系统的最底层,先于操作系统,类似于引导型病毒(A型病毒)。它对系统进程有一定干扰,但是这个干扰几乎可以不被察觉。它不干预用户的任何操作,对普通用户来说,可以当它是透明的——根本不存在。
虚拟还原的工作方式又类似于系统还原,可以在需要的时候将系统进行“备份”,这个备份的速度非常快,最多十几秒就可以完成。它需要占用少量硬盘空间,占用率低于数据量的千分之一。同时它的还原速度也是惊人的,同样最多需要十几秒种。
正由于虚拟还原同时具有系统保护和系统还原的优点,又尽可能避免了它们的一些重要缺点,所以基于虚拟还原方式的软件越来越受到用户青睐。这些软件的代表有:还原精灵,虚拟还原,硬盘还原卡(其实是做在硬件上的软件,主要为了防止盗版)等。

虚拟还原的保护看上去相当神奇,如果按系统还原的工作原理来理解,从硬盘占用到还原速度绝对不可思议。它的保护原理在下一节里面再和大家一起分析。
二、虚拟还原的工作原理探讨
由于本人不认识这些虚拟还原的软件作者,没有机会跟他们请教,所以以下关于其工作原理的探讨都是基于雨人的猜想和臆测,你如果对原理不感兴趣,完全可以跳过这个部分。
1.文件存储分配原理
我们知道,硬盘上最重要的数据区除了BOOT(引导区)外,是ROOT(根目录)和FAT(文件分配表),ROOT里面记录的是文件或子目录的属性、尺寸、日期以及它的起始簇(软盘里面是扇区)。FAT表里面记录的是每个簇的使用分配情况。
正常情况下,当我们向硬盘里面添加一个新文件,OS(操作系统)首先在ROOT里面将文件属性等填进去,在FAT表里面按一定算法找到一个空簇,将它标记为被该文件占用后,在ROOT里面将这个簇做为起始簇记录进去,然后将文件内容写入这个簇。如果文件没有写完,系统再在FAT里找一个空簇,将其标记为占用,然后在前一个簇的最后做一个指针向这个新的簇,形成一个单链表,接着再在这个新的簇里面继续写内容。如此重复直到文件内容完全记录完毕。最后系统根据占用的总簇数计算出文件尺寸,取出当前时间写到ROOT里面。
当我们删除一个文件的时候,系统实际上并不到每个簇去清除内容,而只是把ROOT里面文件名的首字符换成&符号,就是标记这个文件为删除,然后延着链表在FAT表中将该文件占用的所有簇释放(标记为空),这样新的文件写入的时候就可以使用这些被释放的簇。
当我们改变一个文件的属性或名字的时候,系统实际只在ROOT里面做一点改动而已。
子目录下的文件稍微复杂一些,它们的目录信息不是记录在ROOT里面,而是在子目录所指的第一个簇,实际是个SUBROOT。
实际硬盘的存储还要复杂得多,比如它的FAT表还有个副表,用作容错处理。我们这里只是为了讨论虚拟还原的原理,就不做深入讨论,只是简单说明一下。
2.虚拟还原的保护原理
根据雨人的臆测,虚拟还原的软件是这样工作的:
它首先将ROOT、SUBROOT以及FAT表都做个备份。然后,软件将备份的数据以及它的工作参数(密码、自动还原时间等)一起保存在硬盘上。这些空间也同时保护起来。
当用户删除文件、改名、改文件属性的时候,系统按正常情况处理,还原软件不做任何干涉。因为这些操作只针对ROOT和FAT表,并不去动数据区的任何数据。而这两个表软件已经备份过,需要的时候完全可以恢复。
最复杂的是添加新文件的情况。为了保护原来的数据,还原软件不允许在已经保护的簇进行任何的覆盖操作,即使现在的FAT表里面标记是空的,还原软件通过对照备份的FAT表,只要这个簇在表里面,它就会要求OS(操作系统)去找一个新的簇。这样数据区的数据就不会被覆盖。
其实这样说起来简单,但是OS不会知道系统里面已经装了个RECOVERY(虚拟还原软件),所以它还会按同样的算法把同一个簇找出来。这样的话会形成死循环,无法工作下去。
换一种方法,如果RECOVERY在删除文件的时候也不释放FAT表,那么OS找新簇的时候自然避开了已经保护的簇,但是有新问题:我们在做SCANDISK的时候会报出很多丢失的簇。
或者,RECOVERY根本就象个病毒一样,把一个虚假的ROOT显示给我们看,让我们以为文件已经删除了,其实硬盘上的ROOT它什么也不动。这很象以前一个叫DIR2病毒干的那样。
其实我一直就觉得RECOVERY象个病毒一样在工作,至少安装以后,系统的ANTI VIRUS(反病毒功能)必须DISABLE,否则开机就报警,无法工作。
当我们要恢复数据的时候,实际上相当简单,RECOVERY把备份的ROOT、SUBROOT以及FAT表全部恢复掉即可。这一点点内容,恢复起来自然神速。
我们无须深入了解RECOVERY到底是怎样去与OS协同工作的,不同的RECOVERY软件采用的方法可能都不尽相同,对系统工作的干扰程度也不尽相同。我们只要明白它确实是用系统保护的方式在工作,而且是保存了很少量的数据,能快速恢复被保护的内容,这就够了。
3.一点说明
前两节的内容讲原理比较多些,也比较枯燥,估计很多朋友都不愿意看下去。实在是有太多朋友包括雨人公司的技术人员一直在问这个问题:RECOVERY到底是怎样工作的?所以不厌其烦地写了那么多。
另外,保护方式的分类是雨人拍拍脑袋想出来的,没有参考过权威的著述,也许有点荒谬 。同样,硬盘的工作原理也只是雨人在很早前学过,脑袋里面还有点残留印象,写的时候也没去查有关资料,完全是看着天花板回忆着写的,谬误之处在所难免。希望大家领会精神即可。如能不吝指正,不胜感激!
下一节开始讲实战吧。
三、虚拟还原软件介绍
其实,我用得最多的软件只是一个:Recovery Genius(还原精灵),不过我分别研究过它的三个版本,算是有一点心得。另外一个名叫“虚拟还原”的软件,在一个朋友那里试用了一下,和Recovery Genius大同小异,没有仔细比较。至于硬盘还原卡,我觉得就象当年的汉卡、防病毒卡等,是一个特定时期的特定的产物,软件只能做成硬件,才能卖得有声有色,才能买得有名有目。
1.光盘版Recovery Genius
我拿到手的第一个版本是张光盘,安装的时候需要输入序列号。是通过光盘启动来安装的。整个650M的光盘只有中间有非常少的一点点内容,实在是巨大浪费(浪费我的CD-R碟片)。这个光盘实际是加过密的,上面一个重要的文件Boot.img的文件尺寸有1.8G之大(假的!)。但是在我用的Nero5.5.0.4下面,这个防护脆弱不堪,简单地就COPY过来了。只是后来我想把光盘上有用的东西拿出来的时候,才发现它在文件尺寸上动过手脚。我当时就想,Recovery Genius做得象个病毒一样小,它有必要用那么大的一张光盘来做载体吗?这个光盘上那些东西实际都是无用的,只有它的引导部分真正有用。

因此,我用Nero将光盘做了个镜像文件(也可以用WinImage等来做),然后用Cdmage将它读出来,将它的BOOTUP部分分离出来,是个1.44m启动软盘的镜像。最后将分离出来的IMG文件用WinImage写到一张软盘上,成功地将Recovery Genius改成了软盘版。
仔细看看这张软盘,整张盘上除了一个Command.com之外,空空如也,剩余空间有1.3M多,几乎就是张空盘。软件也只有在启动的时候才能安装,不用说,所有的东西还是在Boot扇区里面 —— 真是越看越象病毒!
如果朋友们对这张软盘有兴趣,什么时候我找个空间把这个镜像上传上去供大家下载。序列号就不提供了,现在的Crack站点那么多,真有兴趣的朋友自己找找应该能找到。
这个版本是简体中文的,安装起来很简单。要提醒大家的是,首先,安装之前应该整理硬盘,这样可以将软件对系统进程的干扰降到最低。太乱的硬盘在安装的时候甚至会出错。其次,BIOS里面的Anti Virus或者叫Virus Waring之类的防病毒选项一定要关掉,否则机器启动不起来,一直报警。
另外,轻易不要将其中“禁止软盘启动”选中。刚开始用这个软件的时候,我因为没有注意BIOS病毒防护的问题,机器启动不起来,以为安装失败了,而当时我恰好把“禁止软盘启动”选中了。为了下掉这个“失败”的软件,我用软驱、光驱都无法启动系统,接一个本可以启动的硬盘在前面同样不能启动!(是不是很象当年KV300中的逻辑炸弹?)最后雨人使出浑身解数,用了相当多复杂的手段终于把硬盘“救活”了。我的担心是如果系统真的出问题,一般的爱好者几乎无法自救。
软件参数设置是在开机时,喇叭“嘟嘟”响两声的时候按Ctrl-Home,输入密码后就可以进入设置。
2.硬盘版Recovery Genius
这个版本有2.2M左右大小,是繁体中文版本,在Soft.km169.net可以Down(不过好象没有Crack),版本号是5.0,也是我见过的功能最完善的虚拟还原软件。我拿到手的是个Crack过的版本,序列号乱输就可以用。
这个版比前面说的光盘版多了一些功能,在任务栏上多了一个图标,显示保护空间在硬盘上的占用情况。同时,可以点击图标直接在WIN9X里面设置各种参数,这样更加方便。当然也可以象光盘版本一样,在开机时按Ctrl-Home进去设置。
仔细看,这个Recovery还多了CMOS自动恢复的功能,确实想得比较周到。不过我觉得CMOS与硬件密切相关,不是任何选项都可以通过一个通用程序来调节的。CMOS最好的保护还是设置密码。这样对付一般水平的Cracker是足够了。
3.BIOS版Recovery Genius
捷波(JetWay)的815EP主板首先推出了整合在BIOS里面的Recovery Genius,在网上造成了一定轰动效应。很多朋友都研究了怎样将这个Recovery提取出来,整合到其他主板里面。
雨人按照一些网站上的指导,简单地就把手边这片大众的815EP主板武装了起来。唯一的麻烦只是在于版本的选择让人伤点脑筋,找到一个可以用的正式版花了我很多时间。按一些网站上介绍的拿到的只是一个Test Version(测试版),而去JetWay的网站上下来的中文R01版和英文正式版都经过了技术处理,只能用在JetWay的主板上。
根据我的猜测,这个版本实际是将硬件版(硬盘还原卡)的内容做到了BIOS里面。而所谓硬盘还原卡,我想它的内容也只是有一个BIOS芯片,软件都写在它的BIOS里面了。这个猜测还有点依据是这个版本的Recovery在用CBROM写进主板BIOS的时候,是用的ISA选项,证明它是个ISA的插卡的BIOS,只不过它把检测硬件是否存在的部分PASS掉了。
BIOS版本的Recovery以及如何将它DIY到自己主板上是我下一节要重点讲的。
四、将Recovery Genius写入BIOS
以大众(FIC)815EP主板FIC-FS15为例说明。其他主板也可以参考用同样的方法DIY。
1.准备软件
首先,在C盘根目录下建立一个叫BIOS的子目录,备用。
大众FIC的用户可以安装主板光盘所带的LogoGenie这个软件,然后在软件所在目录(缺省目录是C:/Program Files/FIC/LogoGenie)下找到BMPSIZE.EXE这个文件,然后将这个文件拷贝到C:BIOS下,将它改名为CBROM.EXE,实际上这个软件是CBROM V2.07。再到这个目录的下一级目录(C:/Program Files/FIC/LogoGenie/Utility)下找到FLASH.EXE,也将它拷贝到C:/BIOS子目录下,这个软件实际是AWDFlash V7.97。
也可以在INTERNET上下载CBROM和AWDFLASH这两个文件,只要CBROM版本不低于2.07,AWDFlash版本不低于7.3都可以。
2.获取BIOS文件
首先将主板的BIOS保存下来。在纯DOS下,CD/BIOS,运行FLASH.EXE,回一次车,屏幕下方出现Do You Want To Save Bios (Y/N)的时候,按Y,然后输入文件名字,比如FS15.BIN再回车。这样在C:/BIOS下生成了一个新文件FS15.BIN,这个就是当前主板的BIOS。
然后到INTERNET上拉JETWAY的BIOS文件,在www.MYDRIVERS.COM下,JETWAY的BIOS有很多,必须找2001年5月份的那个版本。更早的是测试版,最新的做过处理,不能用在其他主板。下载地址:
http://file2.mydrivers.com/bios/618ASA06.zip
将下载的618asa06.zip文件解开,其中的618asa06.bin拷贝到C:/BIOS目录下。
3.进一步处理
首先看看现在主板的情况,键入命令:CBBOM FS15.BIN /D,可以看到如下内容:
CBROM V2.07 (C)Award Software 2000 All Rights Reserved.
********FS15.bin BIOS component ********
No. Item-Name Original-Size Compressed-Size Original-File-Name
0. System BIOS 20000h(128.00K) 1472Ch(81.79K) 3slap.BIN
1. XGROUP CODE 0C090h(48.14K) 0831Dh(32.78K) awardext.rom
2. CPU micro code 01800h(6.00K) 00FE5h(3.97K) CPUCODE.BIN
3. ACPI table 03473h(13.11K) 014A4h(5.16K) ACPITBL.BIN
4. EPA pattern 0168Ch(5.64K) 002AAh(0.67K) AwardBmp.bmp
5. GROUP ROM[ 0] 01DE0h(7.47K) 00EFCh(3.75K) _EN_CODE.BIN
6. PCI driver[A] 08000h(32.00K) 04E3Eh(19.56K) k:addromNCR400.rom
7. LOGO BitMap 4B30Ch(300.76K) 041E5h(16.47K) FIC_1st2.bmp
Total compress code space = 34000h(208.00K)
Total compressed code size = 2909Bh(164.15K)
Remain compress code space = 0AF65h(43.85K)
** Micro Code Information **
Update ID CPUID Update ID CPUID Update ID CPUID Update ID CPUID
------------------+--------------------+--------------------+------------------
PPGA 03 0665 PPGA 11 0681 PPGA 10 0683 PPGA 08 0686
注意其中Remain compress code space这一行,我们看到剩余的空间是43.85K。
然后看看JETWAY的BIOS。键入命令CBROM 618asa06.bin /D
******** 618asa06.bin BIOS component ******** /P>
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K) 14FB1h(83.92K) 628ASL06.BIN
1. XGROUP CODE 0BD80h(47.38K) 08374h(32.86K) awardext.rom
2. CPU micro code 02800h(10.00K) 01782h(5.88K) CPUCODE.BIN
3. ACPI table 02EB6h(11.68K) 01202h(4.50K) ACPITBL.BIN
4. EPA pattern 0168Ch(5.64K) 002AAh(0.67K) AwardBmp.bmp
5. GROUP ROM[ 0] 01EE0h(7.72K) 00F69h(3.85K) _EN_CODE.BIN
6. NNOPROM 0127Fh(4.62K) 00BF3h(2.99K) NNOPROM.BIN
7. ROS ROM 12AF0h(74.73K) 0699Bh(26.40K) ROS.BIN
8. ISA ROM[1] 09800h(38.00K) 092C8h(36.70K) STDE.DAT
9. VRS ROM 02280h(8.62K) 014BBh(5.18K) ANTI_VIR.BIN
otal compress code space = 35000h(212.00K)
Total compressed code size = 32BCDh(202.95K)
Remain compress code space = 02433h(9.05K)
** Micro Code Information **
Update ID CPUID Update ID CPUID Update ID CPUID Update ID CPUID
------------------+--------------------+--------------------+-------------------
PPGA 03 0665 PPGA 14 0681 PPGA 10 0683 PPGA 08 0686
PPGA 01 068A PPGA 04 06B0
我们要的Recovery Genius实际就是第8项:STDE.DAT,可以看到文件的原始大小是38K,压缩后占36.7K。因此,FS15主板剩余的空间是足够的。
用命令:CBROM 618ASA06.BIN /ISA EXTRACT将STDE.DAT拷贝出来。

CBROM V2.07 (C)Award Software 2000 All Rights Reserved.
ISA ROM - - - [1] : STDE.DAT
Enter an extract file Name: (STDE.DAT)
这个时候回车就将在C:/BIOS下生成一个新文件STDE.DAT
如果你的主板空间不够,最简单的方法可以将开机的LOGO画面去掉,用下面的命令:
CBROM FS15.BIN /LOGO RELEASE
如果空间还不够,可以试着将PCI项去掉,只要把上面命令中的/LOGO换成/PCI就可以。不过下掉这个项目,主板功能是否正常就不敢保证了。
4.在BIOS文件中加入Recovery Genius
命令:CBROM FS15.BIN /ISA STDE.DAT
出现:
CBROM V2.07 (C)Award Software 2000 All Rights Reserved.
Adding stde.dat .... 96.5%
表明成功地加入了文件,出现其他提示都可能有错误(当然如果你英语很好都能看懂就不用我说了),出现错误千万不要再执行下面一步,否则你的机器可能再也点不亮了。
5.将新的BIOS写回主板
命令:Flash FS15.BIN /SN /PY
执行完毕重新启动系统就可以看到在检测完DMI后有一行提示:
Press Ctrl-R to Enter Recovery Genius
表明Recovery Genius已经成功写入BIOS
6.一点说明
上面的说明全部是基于大众(FIC)主板,更多照顾一点使用FIC主板的一般水平的朋友,主要是因为云南绝大多数使用大众板的朋友都为雨人同志解决衣食住行问题做出过贡献,所谓知恩图报。
如果你使用的是其他品牌的主板,只要是AWARD BIOS的,而且BIOS里面有足够的空间,都可以用上面的方法,举一反三,Do It Yourself。

一种可以穿透还原卡和还原软件的代码
CVC/GB 风般的男人
还原卡和还原软件被广泛运用于各种公共场合的电脑上,比如学校机房和网吧。这些还原卡和还原软件(以下我简称为虚拟还原技术)能够记录下一切对硬盘的写操作,不论您对硬盘进行拷贝还是移动删除甚至是格式化分区等操作,只要一重新启动,一切都会恢复到这个操作之前的情况,因此有些虚拟还原厂商还会在广告词中加上一句“可以防范一切电脑病毒”。这种虚拟还原的方法在大部分时候的确可以对公共机房的电脑起到很好的保护作用,难道真的没有一种方法能够穿透这种保护机制么?答案是否定的,下面请听我一一道来。
一、虚拟还原技术的原理
本文所说的是一种普遍运用于还原卡或还原软件上的技术,当然,不同品牌不同厂商生产的可能不尽相同,但原理却是相通的。
首先,还原卡和还原软件会抢先夺取引导权,将原来的0头0道1扇保存在一个其他的扇区,(具体备份到那个扇区是不一定的),将自己的代码写入0头0道1扇,从而能在操作系统之前得到执行权,这一点类似于一个引导型病毒;然后,我们来看看虚拟还原技术在操作系统之前都做了些什么:
1.将中断向量表中的INT13H的入口地址保存;
2.把自己用于代替INT13H的代码写入内存,并记住入口地址,当然这种“写入内存”并不是普通的“写”,而是一种我们称为“常驻”的方法,有关“常驻程序”的实现方法我们不另外花篇幅来描述了,如果你还不了解的话请自己找有关资料,也可以到www.hackart.orgwww.lsky.net找风般的男人交流;
3.将中断向量表中INT13H的入口地址改为这段常驻程序的入口地址。补充一点,虚拟还原程序在修改INT13H的入口后往往都会修改一些其他中断入口,当然也是通过常驻程序来实现的,这些中断用来实现对中断向量表中INT13H入口地址监控,一旦发现被修改,就马上把它改回,这样做同样是用来防止被有心人破解。
好了,你已经看出来了,这段用来替代BIOS提供的INT13H的代码才是虚拟还原技术的关键,那么这段代码到底实现了些什么了,以下是本人对此拙浅的理解:
1.拦截所有INT13H中对硬盘0头0道1扇的操作
这些包括读写操作,把所有的对0头0道1扇的操作改为对虚拟还原程序备份的那个扇区的操作,这样做的目的是保护虚拟还原代码不被破坏,并且不能被有心人读出进行破解,即使你用扇区编辑工具查看主引导区,实际上你看到的是这个备份的主引导区。
2.拦截所有INT13H中的写硬盘操作
这里包括对8G以下的硬盘的普通通过磁头、磁道、扇区定位的INT13H中的写操作,和扩展INT13H中基于扇区地址方式的对大硬盘的写操作,甚至包括扩展INT13H中对一些非IDE接口的硬盘的写操作。
至于拦截后做什么是虚拟还原技术实现的关键,在早期的DOS系统当中完全可以“什么都不做”,也就是说当用户写硬盘时实际上是什么都没做,但现在的操作系统都要对硬盘进行一些必要的写操作,比如对虚拟内存的写操作。众所周知,虚拟内存实际上就是硬盘,而如果禁止操作系统写硬盘的话显然后果是不堪设想的。所以,大多数虚拟还原厂商用的方法是占用一些硬盘空间,把硬盘所进行的写操作做一个记录,等系统重新启动后还原这一记录,但是怎样科学记录硬盘的写操作,是我一直没想通的问题,这种“科学”应该体现在时间上和硬盘空间的占用量上的,也就是说怎么样用最少的时间和最少的硬盘空间来记录硬盘的写操作是实现关键,如果有这方面想法的朋友欢迎和我交流;
3.备份端口70H,71H中的内容,并把最后一次执行时端口70H,71H的内容和备份的内容做比较,不一样就提示BIOS被修改,是否还原,并通过密码验证修改BIOS是否合法。

二、PC机的中断机制
中断提供了最基本的硬件和软件的接口,它使得程序员不必了解硬件系统的细节,只要直接调用系统提供的中断服务子程序,就可以完成相应功能,这样能使得程序设计更为方便。其实现机制如下:当某一中断源发出中断请求时,CPU能够决定是否响应这一中断请求(当CPU在执行更为重要的工作时,可以暂不响应),如果允许响应该中断,CPU会在现行的指令执行完后,把断点处的下一条指令地址和各寄存器的内容和标志位的状态,推入堆栈进行保护,然后转到中断源服务程序的入口,进行中断处理,当中断处理完成后,再恢复被保留的各寄存器、标志位状态和指令指针,使CPU返回断点,继续执行下一条指令。
为了区别各个中断,CPC系统给每个中断都分配了一个中断号N,比如INT 3H是断点中断,INT 10H是显示中断,我们今天要讨论的主要是INT 13H磁盘读写中断。
要说清楚PC机上的中断机制,用这一点篇幅是完全不够的,这里我所说的只是一个大概,如果你不清楚的话,请查阅一些资料或和我交流,我们今天重要要说的就是以INT13H为例看看BIOS提供给我们的中断到底都是在做什么?所谓BIOS中断简单说就是你机器上的BIOS提供的中断,那么在BIOS中断的后面,到底是些什么呢?实际上是一些对端口的输入输出操作,PC的每个端口都实现特定的功能,我们完全可以不调用BIOS提供的中断而直接用输入输出指令对这些端口进行操作,从而可以实现象调用BIOS中断一样的功能,但是一个前提是你必须对这些端口有详细的了解。反过来说,PC的中断系统的一大好处就是能够让程序员无须了解系统底层的硬件知识的而能够编程,从这点看,中断有点象我们平时所说的“封装”,我不知道这样说对不对,但的确中断为我们“封装”了许多系统底层的细节。