社区
汇编语言
帖子详情
BIOS提供的中断服务程序究竟放在内存的哪里?
qlmi
2005-12-04 04:24:13
从中断向量表里可以查到中断对应的IP:CS的值,但是中断号相邻的中断程序对应的CS的值并不是固定不变的。另为,不是说BIOS的入口地址在FFFF:0吗,但是查到的中断服务程序的地址也并不是在这个段内。这究竟是怎么回事?请高手指点一二!
...全文
1128
26
打赏
收藏
BIOS提供的中断服务程序究竟放在内存的哪里?
从中断向量表里可以查到中断对应的IP:CS的值,但是中断号相邻的中断程序对应的CS的值并不是固定不变的。另为,不是说BIOS的入口地址在FFFF:0吗,但是查到的中断服务程序的地址也并不是在这个段内。这究竟是怎么回事?请高手指点一二!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MoFanYingXiong
2006-01-24
打赏
举报
回复
终于找到了比较完整的解答。请参考下面这张图片:
http://bbs.xml.org.cn/uploadfile/2005121311185427778.jpg
NeoZero
2006-01-24
打赏
举报
回复
可以看一下梁肇新的《编程高手箴言》,里面有介绍。唉,现在书在学校……
MoFanYingXiong
2005-12-12
打赏
举报
回复
正在研究之中,尚未找到问题的答案。请再等待一些时日。
qlmi
2005-12-10
打赏
举报
回复
MoFanYingXiong(模范英雄) 老兄,研究出来了吗?
luck1225
2005-12-09
打赏
举报
回复
路过
MoFanYingXiong
2005-12-08
打赏
举报
回复
mydo(坎道斯|Kinds)老兄是说rom bios 例行程序装载在从 0f0000h 开始的 64k 空间中;而MoFanYingXiong(模范英雄)老兄却说BIOS的中断服务程序是放在FFFF:0000以后的。究竟是怎么回事?
被你这么一问,我也糊涂了。搞不明白,我还得再去仔细研究一下。
qlmi
2005-12-07
打赏
举报
回复
对不起邮箱地址搞错了:ql.mi@163.com
qlmi
2005-12-07
打赏
举报
回复
mydo(坎道斯|Kinds)老兄是说rom bios 例行程序装载在从 0f0000h 开始的 64k 空间中;而MoFanYingXiong(模范英雄)老兄却说BIOS的中断服务程序是放在FFFF:0000以后的。究竟是怎么回事?另外,DOS为什么要修改BIOS的中断向量表呢?好像很多书上都没有提到这一点。
另外我得邮箱:qlmi@163.com,谢谢wenwen227(过河卒)。
迷你苑
2005-12-07
打赏
举报
回复
我以前写过,要可以发给你。wenwen227@126.com
迷你苑
2005-12-07
打赏
举报
回复
你可以写个程序,功能和debug d差不多,存在软盘里第一扇区,然后设成软盘启动,就可以看到没有被操作系统改过的那1M的内存数据
MoFanYingXiong
2005-12-07
打赏
举报
回复
BIOS的中断服务程序是放在FFFF:0000以后的。
至于你看到的,入口地址在00A7:1068处,那是因为操作系统修改了中断向量表,用自己的中断服务程序代替了BIOS的中断服务程序。
事情就是这样简单。
常
2005-12-06
打赏
举报
回复
开机后,cpu的CS:IP被自动设置成ffff:0,此处是一条跳转语句,然后去执行bios中的硬件系统检测和初始化程序。
可见,是电器工程师把cpu的开机默认值设置成ffff:0,然后去执行bios中相应程序,并不是说bios的入口地址ffff:0,没这个说法。但可以说bios中某个函数的入口地址
看来楼住对入口地址不是很清楚,用汇编写个procedure然后自己调用一下,就会有个具体的理解。
nillge
2005-12-06
打赏
举报
回复
保护模式下不是在那个地方,IDT是可以放在其他地方的,DOS下就是1M下。
codesphere
2005-12-06
打赏
举报
回复
放在ROM里嘛
Fiven_Luo
2005-12-06
打赏
举报
回复
就是函数指针嘛。
中断处理程序不就是一个函数而已吗?最后用IRET返回,仅此而已。
无谓何被执行程序,这不是exe。
qlmi
2005-12-06
打赏
举报
回复
那FFFF:0000处的跳转指令本身是不是也是ROM BIOS的一部分呀?
qlmi
2005-12-06
打赏
举报
回复
老兄那为什么我用debug查看内存0000:0000开始的内存时里面显示的CS的内容却不在f0000处呢?
如下:
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
D:\DOCUME~1\BILLGA~1>debug
-d 0000:0000
0000:0000 68 10 A7 00 8B 01 70 00-16 00 90 03 8B 01 70 00 h.....p.......p.
0000:0010 8B 01 70 00 B9 06 12 02-40 07 12 02 FF 03 12 02 ..p.....@.......
0000:0020 46 07 12 02 0A 04 12 02-3A 00 90 03 54 00 90 03 F.......:...T...
0000:0030 6E 00 90 03 88 00 90 03-A2 00 90 03 FF 03 12 02 n...............
0000:0040 A9 08 12 02 A4 09 12 02-AA 09 12 02 5D 04 12 02 ............]...
0000:0050 B0 09 12 02 0D 02 E1 02-C4 09 12 02 8B 05 12 02 ................
0000:0060 0E 0C 12 02 14 0C 12 02-1F 0C 12 02 AD 06 12 02 ................
0000:0070 AD 06 12 02 A4 F0 00 F0-37 05 12 02 2C 42 00 C0 ........7...,B..
那为什么int 0的入口地址在CS:00A7;IP:1068处呢?(其他中断也有这个问题)而不是在BIOS所在的f0000h处?
beepbug
2005-12-06
打赏
举报
回复
“请问下什么是入口地址?是不是就是被执行程序的第一行代码的地址?”
在这里就是所执行的中断服务例程的第一条指令的地址。不一定是中断服务例程的首地址。你自己设计一个中断服务例程,完全可以从中间某条指令开始执行。
qlmi
2005-12-05
打赏
举报
回复
请问下什么是入口地址?是不是就是被执行程序的第一行代码的地址?
beepbug
2005-12-05
打赏
举报
回复
BIOS有两块。一块放在ROM,地址是固定的,代码也是固定的。另一块在DOS的BIOS模块里,系统启动时,装入内存的RAM里。入口地址在中断矢量表里。地址和代码都是可变的。
加载更多回复(6)
IBMPC汇编语言⑨
BIOS
和DOS
中断
调用程序设计PPT教案.pptx
IBMPC汇编语言⑨
BIOS
和DOS
中断
调用程序设计PPT教案.pptx
qbwin处理
bios
的源程序
qbwin开发的处理
bios
的源程序,研究qbwin用
什么是
BIOS
?如何进入
BIOS
,恢复
BIOS
原始设置的快捷方法参考.pdf
什么是
BIOS
?如何进入
BIOS
,恢复
BIOS
原始设置的快捷方法参考.pdf
操作系统的引导过程.doc
操作系统的引导过程,详细介绍了操作系统的引导过程
简析linux内核的内核执行流程.doc
简析linux内核的内核执行流程.doc
汇编语言
21,498
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章