找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 1274|回复: 6

为什么进入保护模式后,不能调用BIOS例程

[复制链接]

1

主题

3

回帖

57

积分

至尊会员

积分
57

至尊会员

发表于 2024-4-26 17:11:41 | 显示全部楼层 |阅读模式
我没有搞明白:为什么进入保护模式后,不能调用BIOS例程吗? 请大家帮忙解惑。

3

主题

33

回帖

381

积分

至尊会员

积分
381

至尊会员

发表于 2024-4-26 23:30:04 | 显示全部楼层
你说的BIOS例程是指Int X系列?

416

主题

315

回帖

3288

积分

管理员

积分
3288
发表于 2024-4-27 09:46:49 | 显示全部楼层
因为BIOS例程都是16位的实模式代码。在保护模式下,别的不说,光是加载段寄存器,就不一样。
mov ds, ax
在bios代码看来,是将ax的内容乘以16。但保护模式看来ax里是段选择子,要用它去描述符表里找对应的段描述符。

1

主题

3

回帖

57

积分

至尊会员

积分
57

至尊会员

 楼主| 发表于 2024-4-27 11:46:17 | 显示全部楼层
站长 发表于 2024-4-27 09:46
因为BIOS例程都是16位的实模式代码。在保护模式下,别的不说,光是加载段寄存器,就不一样。
mov ds, ax
在 ...

哦,明白了。谢谢老师

1

主题

3

回帖

57

积分

至尊会员

积分
57

至尊会员

 楼主| 发表于 2024-4-28 09:15:04 | 显示全部楼层
老师,我再问一下:即使把BIOS例程的中断调用读取出来,整理成保护模式下的中断描述符,并正确加载IDTR,也会因为BIOS例程是16位代码操作尺寸而无法运行。我这样理解对吗?

416

主题

315

回帖

3288

积分

管理员

积分
3288
发表于 2024-4-28 09:39:33 | 显示全部楼层
大江 发表于 2024-4-28 09:15
老师,我再问一下:即使把BIOS例程的中断调用读取出来,整理成保护模式下的中断描述符,并正确加载IDTR,也 ...

是的。这个事情与中断如何处理无关,只与中断处理过程的代码有关。

1

主题

3

回帖

57

积分

至尊会员

积分
57

至尊会员

 楼主| 发表于 2024-4-28 11:14:18 | 显示全部楼层
站长 发表于 2024-4-28 09:39
是的。这个事情与中断如何处理无关,只与中断处理过程的代码有关。

好的,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-12-22 09:19 , Processed in 0.203697 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表