|
主题 : : 关于检测点13.2 [待解决] |
回复[ 24次 ]
点击[ 1767次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-02-15 11:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-02-15 09:01 |
13.2第一题的正确答案不知是什么?对OR错?
我认为是错的。我的理解,既然BIOS是第一个被执行的程序,而且ROM一直在内存中,那位于FFFF:0000处的指令是不是本身就在ROM中,所以我们不能改写?
另,请问BIOS ROM程序如果是内存的一部分,那它的内存地址是多少?
请高手赐教! | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-02-15 15:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26 |
ffff:0000是ROM空间了,里面的内容都是固化了的,所以,是不能修改的。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-02-15 15:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26 |
既然是固化了的,应该能查看ffff:0处的数据,反汇编出来得到的是不是就应该是bios 的入口。但是,这个入口是不是bios的起始地址,就说不准了吧。
真还没有考虑过这些。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-02-16 13:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-02-15 09:01 |
|
|
|
|
|
[第4楼]
[ 回复时间:2008-10-18 22:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-18 22:37 |
|
|
|
|
|
[第5楼]
[ 回复时间:2008-11-05 02:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2008-08-02 09:52 |
(2)int 19h中断例程,可以由DOS提供。
个人认为也不对。
理由是:先执行了int 19h后中断后,才出来DOS。
有个先后顺序问题,就算可以修改int 19h处的内容,重启机器后,又不可能保存。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-12-08 16:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-27 20:01 |
同意fancx的意见!
在书上第12页有很明确的一句话:向地址C0000~FFFFF的内存单元中写入数据的操作是无效的,因为这等于改写只读存储器的内容!
看来是自己看书不仔细啊! | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-08-23 03:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-14 00:35 |
没有行动就没有发言权, 我不知道楼上的所有哥哥们 亲手调过BIOS没,我可以明确的告诉你们 完全可以使CPU不去执行BIOS中的硬件系统检测和初始化程序。在说了书上的话没看懂吗?
注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中既可,因为它们是固化到ROM中程序,一直在内存中存在。这是书上的原话。
这句话的意思看来都不明白吧,我给解释下:我们以前都是自己编写中断例程,将它们放到安装程序中,然后运行安装程序,将他们安装到指定的内存区中,但是在BIOS中所提供的中断例程是固化到ROM中的,一直在内存中存在。而不是大家普遍认为的是那条跳转指令固化到ROM中。
所以来说我们完全可以编程改变FFFF:0处的指令。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-08-30 14:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13 |
回复:[第7楼]
------------------
“对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中既可,因为它们是固化到ROM中程序……”这些都没有错,但是初始化程序就包括了登记bios中断例程的的入口地址到中断向量中,如果不执行硬件检测和程序初始化,你又如何调用其提供的的中断例程? | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-10-13 20:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:8
注册日期:2009-09-30 22:35 |
所以来说我们完全可以编程改变FFFF:0处的指令。
------------------
回复:内存分为只读和随机两种,只读就只能读不能写,也就是不能向里面编程,我们平常编写的程序是存在内存中的,只不过是随机里面的。这是我的理解。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-11-10 16:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2008-12-24 23:48 |
回复:[第7楼]
------------------
“对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中既可,因为它们是固化到ROM中程序……”这些都没有错,但是初始化程序就包括了登记bios中断例程的的入口地址到中断向量中,如果不执行硬件检测和程序初始化,你又如何调用其提供的的中断例程?
------------------
回复:你可以自己在debug里测试下 在ffff:0处随便写个指令,然后用u命令查看 或者把cs设置ffff ip设置0 在输入r命令 看看ffff:0是不是你写的那条指令 我肯定你100%没动手实验过 别瞎叫别人不动手 你自己动了么 | | |
|
|
|
|
[第11楼]
[ 回复时间:2010-01-01 15:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36 |
|
|
|
|
|
[第12楼]
[ 回复时间:2010-02-16 05:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-21 15:36 |
我觉得第一题,JMP是不能改的。是固化ROM的里面的指令。
第二题,是可以由DOS提供。但int 19h是引导程序。系统启动的时候会处始化内存,引导程序也是从ROM里面调入。 | | |
|
|
|
|
[第13楼]
[ 回复时间:2010-02-20 09:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-03 13:33 |
第一题不能修改,还记得前面改日期的实验么?我是没修改成功 | | |
|
|
|
|
[第14楼]
[ 回复时间:2010-05-01 21:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-04 10:05 |
|
|
|
|
|
[第15楼]
[ 回复时间:2010-06-03 20:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-27 20:01 |
真的是比较感动,现在的汇编论坛还这么热闹,好长时间没来了。 | | |
|
|
|
|
[第16楼]
[ 回复时间:2010-12-05 15:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22 |
我想说的是7楼,ffff:0不能改。至于你说CPU不去执行BIOS中的硬件系统检测和初始化程序。也许是因为改变了cs或者ip,或者两个都改了。在进入操作系统的时候,按键盘的Pause,可以使进入系统的过程暂停,也就是不进入系统,画面停止。 | | |
|
|
|
|
[第17楼]
[ 回复时间:2010-12-05 15:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22 |
|
|
|
|
|
[第18楼]
[ 回复时间:2010-12-05 15:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22 |
第二问,应该是可以提供。int 19,就是执行(cs)=(19*4+2),(ip)=(19*4)的指令。进入了DOS后,完全可以修改向量表,既然可以修改向量表,就可以算是提供中断例程。 | | |
|
|
|
|
[第19楼]
[ 回复时间:2011-01-26 10:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-02 09:00 |
我想说.用DEBUG的确能够修改FFFF:0里面的内容.各位试一下便知.
但是我们所不知道的是,在电脑关机断电之后.再开机时,FFFF:0里的内容是否是我们之前修改的. | | |
|
|
|
|
[第20楼]
[ 回复时间:2011-01-26 10:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-02 09:00 |
另外关于第二小点.我认为行不通.
书上原话这么说的:
(3)硬件系统检测和初始化完成后,调用INT 19H进行操作系统的引导.**从此将计算机交由操作系统控制**.
(4)DOS启动后,除完成其他工作外,**还将它所提供的中断例程装入内存,并建立相应的中断向量**.
也就是说DOS提供的中断例程在调用INT 19H之后装入内存,那显然不是由DOS提供的. | | |
|
|
|
|
[第21楼]
[ 回复时间:2011-06-13 03:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53 |
|
|
|
|
|
[第22楼]
[ 回复时间:2011-08-02 16:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29 |
7楼看法错误,FFFF:0是加电开机后,执行的地方,从这里开始,首读取bios设置初始化硬件环境,你怎么可能改变它,你改变了它,重新开机后,难道它就不读取bios,进行硬件初始化了吗?没有硬件环境,计算机怎么正常工作。
另外,int 19的中断例程,也是不固化内存中的,这段例程负责检测硬盘,或是软驱,然后从0面0磁道,第一个扇区开始读取dos系统到内存中。所以说也是不可以由dos提供的。只有dos系统启动以后,你可以把安装自己的int 19例程,但是只要重启,它就不存在了。 | | |
|
|
|
|
[第23楼]
[ 回复时间:2011-08-02 16:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29 |
|
|
|
|
|
[第24楼]
[ 回复时间:2018-03-26 16:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2018-03-25 20:26 |
论坛真的很棒,但是看上一条回复时间,说明,学习汇编的人真的少了 | | |