. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于检测点13.2  [待解决] 回复[ 24次 ]   点击[ 1767次 ]  
xhx960066
[帖 主]   [ 发表时间:2008-02-15 11:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-15 09:01
13.2第一题的正确答案不知是什么?对OR错?
我认为是错的。我的理解,既然BIOS是第一个被执行的程序,而且ROM一直在内存中,那位于FFFF:0000处的指令是不是本身就在ROM中,所以我们不能改写?
另,请问BIOS ROM程序如果是内存的一部分,那它的内存地址是多少?
请高手赐教!
crazyman
[第1楼]   [ 回复时间:2008-02-15 15:51 ]   [引用]   [回复]   [ top ] 
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26
ffff:0000是ROM空间了,里面的内容都是固化了的,所以,是不能修改的。
crazyman
[第2楼]   [ 回复时间:2008-02-15 15:56 ]   [引用]   [回复]   [ top ] 
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26
既然是固化了的,应该能查看ffff:0处的数据,反汇编出来得到的是不是就应该是bios 的入口。但是,这个入口是不是bios的起始地址,就说不准了吧。
真还没有考虑过这些。
xhx960066
[第3楼]   [ 回复时间:2008-02-16 13:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-02-15 09:01
谢谢Crazyman的答复。
chenfei7313
[第4楼]   [ 回复时间:2008-10-18 22:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-18 22:37
ffff:0处是属于rom中,rom是不能修改的
fancx
[第5楼]   [ 回复时间:2008-11-05 02:17 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2008-08-02 09:52
(2)int 19h中断例程,可以由DOS提供。

个人认为也不对。
理由是:先执行了int 19h后中断后,才出来DOS。
有个先后顺序问题,就算可以修改int 19h处的内容,重启机器后,又不可能保存。
jizha
[第6楼]   [ 回复时间:2008-12-08 16:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-27 20:01
同意fancx的意见!
在书上第12页有很明确的一句话:向地址C0000~FFFFF的内存单元中写入数据的操作是无效的,因为这等于改写只读存储器的内容!
看来是自己看书不仔细啊!
sunhairuiqn
[第7楼]   [ 回复时间:2009-08-23 03:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-14 00:35
没有行动就没有发言权, 我不知道楼上的所有哥哥们 亲手调过BIOS没,我可以明确的告诉你们 完全可以使CPU不去执行BIOS中的硬件系统检测和初始化程序。在说了书上的话没看懂吗?
注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中既可,因为它们是固化到ROM中程序,一直在内存中存在。这是书上的原话。
这句话的意思看来都不明白吧,我给解释下:我们以前都是自己编写中断例程,将它们放到安装程序中,然后运行安装程序,将他们安装到指定的内存区中,但是在BIOS中所提供的中断例程是固化到ROM中的,一直在内存中存在。而不是大家普遍认为的是那条跳转指令固化到ROM中。
所以来说我们完全可以编程改变FFFF:0处的指令。
advancedprogrammer
[第8楼]   [ 回复时间:2009-08-30 14:23 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13
回复:[第7楼]
------------------
“对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中既可,因为它们是固化到ROM中程序……”这些都没有错,但是初始化程序就包括了登记bios中断例程的的入口地址到中断向量中,如果不执行硬件检测和程序初始化,你又如何调用其提供的的中断例程?
hdming88
[第9楼]   [ 回复时间:2009-10-13 20:25 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:8
注册日期:2009-09-30 22:35
所以来说我们完全可以编程改变FFFF:0处的指令。
------------------
回复:内存分为只读和随机两种,只读就只能读不能写,也就是不能向里面编程,我们平常编写的程序是存在内存中的,只不过是随机里面的。这是我的理解。
fyjava
[第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%没动手实验过 别瞎叫别人不动手 你自己动了么
iammingbo
[第11楼]   [ 回复时间:2010-01-01 15:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36
谢谢crazyman 的提示
xhz520
[第12楼]   [ 回复时间:2010-02-16 05:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-21 15:36
我觉得第一题,JMP是不能改的。是固化ROM的里面的指令。
第二题,是可以由DOS提供。但int 19h是引导程序。系统启动的时候会处始化内存,引导程序也是从ROM里面调入。
strawer
[第13楼]   [ 回复时间:2010-02-20 09:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-03 13:33
第一题不能修改,还记得前面改日期的实验么?我是没修改成功
zihaolee
[第14楼]   [ 回复时间:2010-05-01 21:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-04 10:05
试过啊  FFFF:0 里改不了吧
jizha
[第15楼]   [ 回复时间:2010-06-03 20:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-27 20:01
真的是比较感动,现在的汇编论坛还这么热闹,好长时间没来了。
one_cai
[第16楼]   [ 回复时间:2010-12-05 15:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22
我想说的是7楼,ffff:0不能改。至于你说CPU不去执行BIOS中的硬件系统检测和初始化程序。也许是因为改变了cs或者ip,或者两个都改了。在进入操作系统的时候,按键盘的Pause,可以使进入系统的过程暂停,也就是不进入系统,画面停止。
one_cai
[第17楼]   [ 回复时间:2010-12-05 15:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22
改变cs和ip,和改变ffff:0是不同的。
one_cai
[第18楼]   [ 回复时间:2010-12-05 15:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22
第二问,应该是可以提供。int 19,就是执行(cs)=(19*4+2),(ip)=(19*4)的指令。进入了DOS后,完全可以修改向量表,既然可以修改向量表,就可以算是提供中断例程。
alex4814
[第19楼]   [ 回复时间:2011-01-26 10:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-02 09:00
我想说.用DEBUG的确能够修改FFFF:0里面的内容.各位试一下便知.
但是我们所不知道的是,在电脑关机断电之后.再开机时,FFFF:0里的内容是否是我们之前修改的.
alex4814
[第20楼]   [ 回复时间:2011-01-26 10:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-02 09:00
另外关于第二小点.我认为行不通.

书上原话这么说的:
(3)硬件系统检测和初始化完成后,调用INT 19H进行操作系统的引导.**从此将计算机交由操作系统控制**.
(4)DOS启动后,除完成其他工作外,**还将它所提供的中断例程装入内存,并建立相应的中断向量**.

也就是说DOS提供的中断例程在调用INT 19H之后装入内存,那显然不是由DOS提供的.
frogoscar
[第21楼]   [ 回复时间:2011-06-13 03:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
对7楼没想法,太搞笑了
vs9841
[第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例程,但是只要重启,它就不存在了。
vs9841
[第23楼]   [ 回复时间:2011-08-02 16:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
打错了,int19中断例程也是固化到内存中的。
jzy456789
[第24楼]   [ 回复时间:2018-03-26 16:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-03-25 20:26
论坛真的很棒,但是看上一条回复时间,说明,学习汇编的人真的少了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved