汇编程序在调用INT中断程序(比如INT13)的过程中,CPU到底做了什么?

汇编程序在调用BIOS的中断程序(比如INT13)的过程中,CPU到底做了什么?比如以下程序:MOVAX,0X0820MOVES,AXMOVCH,0;柱面0MOVDH,0... 汇编程序在调用BIOS的中断程序(比如INT13)的过程中,CPU到底做了什么?
比如以下程序:
MOV AX,0X0820
MOV ES,AX
MOV CH,0 ;柱面 0
MOV DH,0 ;磁头 0
MOV CL,2 ;扇区 0
MOV AH,0X02 ;AH=2 读入磁盘
MOV AL,1 ;1个扇区
MOV BX,0 ;
MOV DL,0X00 ;A驱动器
INT 0X13 ;调用磁盘BIOS
JNC FIN ;没出错转FIN
FIN:
在程序执行INT 0X13 过程中(亦即在INT 0X13中,JNC FIN之前),到底发生了什么
是 (1)CPU转去执行了BIOS中的相应指令,但CPU执行的不都是内存中的指令吗?
还是(2)BIOS中的指令可以不用CPU来执行。
展开
 我来答
百度网友dd2a4ae
推荐于2017-09-07 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1641万
展开全部
INT 13H这类软件中断指令,功能上是带有现场状态保存和断点地址保存的无条件转移指令。

执行这条指令时,它做这几件事:
1. 将CPU内的标志寄存器内容压入堆栈,用来保存断点的现场状态。
2. 将断点的地址(CS和IP寄存器的当前值)压入堆栈保存,以保存返回所需的断点地址。
3. 按中断号取得中断向量,并无条件跳转到中断向量所指向的目标地址。
此后,CPU就进入中断服务程序去运行它的程序了。而中断服务程序最后会有一条IRET中断返回指令,通过它恢复现场返回断点,程序继续执行INT 指令后面的程序指令。

关于你的两个疑问:
(1)CPU转去执行了BIOS中的相应指令,说得没错。
内存并不只指RAM内存条,ROM也是内存的一部分。
在DOS下,RAM只占用1M地址空间的前640KB,还有384KB系统保留的地址,其中的一部分就是给ROM用的。
ROM中的BIOS程序,是CPU可以直接执行的程序指令。
你电脑开机时,CPU最初执行的POST自检程序,也是在ROM中的。
而ROM中的BIOS(基本输入输出系统)本来就是让电脑在工作中随时调用的功能性子程序的合集。

(2)这就是错解了。
在运行DOS的电脑中,一切指令全部都是由CPU执行处理的。
更多追问追答
追问
CPU中运算放大器吗?
32位和64位的操作系统还调用BIOS中的这些中断函数吗?
追答
运算放大器是模拟电子技术中的概念,不是数字电路中的元件。
CPU里没有运算放大器。

32位和64位操作系统中,不再使用BIOS里的中断了。它们有操作系统自带的底层输入输出设备驱动。
BIOS只在16位实模式的工作方式中才使用。刚开机启动、操作系统启动之前,CPU是工作在实模式的。16位的DOS操作系统也是工作在实模式下。
32位和64位系统中, CPU工作在保护模式下。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式