永发信息网

汇编:中断小问题

答案:2  悬赏:20  手机版
解决时间 2021-02-03 09:58
在WIN32下能调用BIOS的INT命令吗?书上说这些中断是BIOS厂商提供的,可又要要求在REAL-MODE 16位下调用. 为什么32位就不能调用这个中断? 如果不能,那WINXP怎么办?它最终还是要调用BIOS的中断来执行一写输入输出命令.
最佳答案
在WIN32下是不能调用BIOS的INT中断服务程序的。但微软为了以前dos系统下的应用程序可在win32系统中继续使用,提供了虚拟8086模式,即虚拟出一个dos系统供以前的dos16位程序运行,但是一些硬件中断功能,如读写硬盘的bios中断请求出于安全等因素考虑,还是不能成功执行。
Windows是出于系统的安全和可方便应用程序编程等方面的考虑,不支持直接的中断调用,因为中断是处于系统底层的东东,像dos下的中断功能,用中断号来指明功能,繁琐又容易出错,实在不方便编程,而且中断号、ah值等表示的功能号又是有限的,不能提供很多的系统功能。windows提供了API编程, 支持用函数名来调用系统服务,如ReadFile等,方便直观,易于编程。

另外win32系统在启动时可能是用到了BIOS中断,但在之后是不用BIOS中断的功能的,因为BIOS的代码是16位的,且只支持单线程,在32位多线程保护模式下工作是不合适而且是不能的。系统里有硬件驱动、内核等代码替代了bios的硬件io等功能。
全部回答
你如果是软件调试的话,没有中断源当然无法进入中断了 想看到效果只能通过设置断点然后置ex0位进入中断 如果是硬件调试 程序在star: ajmp $处一直等待,相当于死循环 而进入中断后,你中断一直没返回(reti or iret) 也就是你执行了 sjmpnext 后相当于还处在中断里面 在无中断嵌套的条件下,无法继续中断 还有一个写程序习惯上的问题 我觉得程序规范点是写法应该是先把寄存器初始化完成后再开始工作 譬如你先开了中断才配置it0,虽然这个在执行上没多大问题 但应该养成良好的写程序习惯,这点只是建议。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问简阳市建设路棚户改造工程什么时候起动
一廛的意思是什么啊?知道的请说下!
山东省医学科学院附属医院-一号楼在什么地方
【雾霾标准】《环境空气质量标准》规定的需检
马云的50元面试题答案
QQ不想要了有什么办法可以消失
泥塘怎么去啊,有知道地址的么
冯子无鱼的意思是什么啊?知道的请说下!
中国的4个直辖市是什么??
岑溪体育中心训练馆在哪里啊,我有事要去这个
深圳龙华和观澜哪里可以办理建行公积金密码重
获刈的意思是什么啊?知道的请说下!
57度湘铁板烧柏威年店怎么去啊,有知道地址的
世纪50年代,赫鲁晓夫曾经对美国记者表示:“
CS1.6开SXE怎么截图?
推荐资讯
石铭的意思是什么啊?知道的请说下!
我的工作是男友爸爸给找的,由于母亲住院我要
电脑几种格式化,格式有什么不一样?影响什么
为什么有些物质由原子构成?不是说分子由原子
人们对宋庆龄的评价
加强抗菌药物的合理应用,以下哪种说法是错误
魔兽世界,ZUL至少几级可以去
百老泉酒店(南通海安县)怎么去啊,我要去那办
<<植物大战僵尸>>中僵尸站在中间,植物种在两
红树林网吧(文苑路店)地址有知道的么?有点事
有人说:“美国总统是世界上最令人向往的一个
欣隆盛世朗域停车场(出入口)地址有知道的么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?