CPU如何找到中断:
通过中断向量表找
中断向量在内存中保存,存放着256个中断源所对应的中断处理程序入口
保存在0000:0000到0000:03FE的地址里共256位
每个表项占2个字,即4个字节 32位
图示:
0号中断 32位
1号中断 32位
2号中断 32位
3号中断 32位
-------------
中断后怎样继续执行原来的程序?
遇到中断时CPU把CS:IP内存入栈暂时保存
等中断程序执行结束,再从栈中取得原来的CS和IP值
这个过程也是(C语言的函量调用原理)
中断的入栈出栈由CPU的硬件完成
--------------------------
div除法指令
div <寄存器>
除数:
有8位和16位两种,在寄存器或内存单元中
被除数:
当除数是8位:放在AX(16位)
当除数是16位,放在 DX AX(32位)中 DX高位 AX低位
结果:
当除数是8位:AL存放商,AH存放余数
当除数是16位:AX存放商,DX存放余数
-----------------
----------------
中断程序1:
mov ax,100H ;ax:0100H
mov bh,1 ;bx:0100H
div bh ;执行 01 / 0100H
产生错误的原因
01 / 0100H
除数是8位,结果也是8位,但实际结果是16位
--------------
让程序不运行原来的中断:
修改中间向量表的入口地址
ASM_5中断
最新推荐文章于 2022-08-14 08:56:44 发布