ASM_5中断

来源:互联网 发布:数学答题软件 编辑:程序博客网 时间:2024/06/10 07:33

 
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位

--------------
让程序不运行原来的中断:
    修改中间向量表的入口地址

原创粉丝点击