• int指令


         中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。

    目录

    一、int指令

    二、BIOS和DOS所提供的中断例程

    三、BIOS和DOS中断例程的安装过程

    四、DIOS中断例程应用


                                                

     

    一、int指令

    1.int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。

    2.CPU执行int指令,相当于引发一个n号中断的中断过程,执行过程如下:
    (1)取中断类型码n;

    (2)标志寄存器入栈,IF=0,TF=0;

    (3)CS、IP入栈。

    (4)(IP)=(n*4),(CS)=(n*4+2)。

    从此处转去执行n号中断的处理程序。

    二、BIOS和DOS所提供的中断例程

    1.在系统板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS中主要包含以下几部分内容:

    (1)硬件系统的检测和初始化程序。

    (2)外部中断和内部中断的中断例程。

    (3)用于对硬件设备进行I/O操作的中断例程。

    (4)其他和硬件相关的中断例程。

    2.操作系统DOS也提供了中断例程,从操作系统的角度来看,DOS的中断例程就是操作系统向程序员提供的编程资源。

    3.BIOS和DOS在所提供的中断例程中包含了许多子程序,这些子程序实现了程序员在编程的时候经常需要用到的功能。程序员在编程的 时候,可以用int指令直接调用BIOS和DOS提供的中断例程,来完成这些工作。

    4.和硬件设备相关的DOS中断例程中,一般都调用了BIOS的中断例程。

    三、BIOS和DOS中断例程的安装过程

    (1)开机后,CPU一加电,初始化(CS)=0FFFFH,(IP)=0,自动从FFFF:0单元开始执行程序。FFFF:0处有一条转跳指令,CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。

    (2)初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中即可,因为它们是固化到ROM中的程序,一直在内存中存在。

    (3)硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交给操作系统控制。

    (4)DOS启动后,除完成其他工作外,还将它所提供的中断例程装入内存,并建立相应的中断向量。

    四、DIOS中断例程应用

    1.int 10h 中断例程是BIOS提供的中断例程,其中包含了多个和屏幕输出相关的子程序

    2.一般来说,一个供程序员调用的中断例程中往往包含多个子程序,中断例程内部用传递进来的参数来决定执行哪一个子程序,BIOS和DOS提供的中断例程,都用ah来传递内部子程序的编号

    3.int 10h中断例程的设置光标位置功能:

    mov ah,2 ;置光标
    mov bh,0 ;第0页
    mov dh,5 ;dh中放行号
    mov dl,12 ;dl中放页号
    int 10h

    4.(ah)=2表示调用第10h号中断例程的2号子程序,功能为设置光标位置,可以提供光标所在的行号,列号和页号作为参数,(bh)=0,(dh)=5,(dl)=12,设置光标到第0页,第5行,第12列

    5.bh中页号的含义:内存地址中,B8000H~BFFFFH共32KB的空间,为80*25彩色字符模式的显示缓冲区,一屏的内容在显示缓冲区中占4000个字节
    6.显示缓冲区分为8页,每页4KB(约4000字节),也就是说,通常情况下,B8000H~B8F9FH中的4000个字节的内容将出现在显示器上
     

     

  • 相关阅读:
    数据类型与SQL语句
    【MATLAB GUI】 5. 图像处理菜单(菜单编辑器)
    开发知识点-Ruby
    matlab使用移动平均滤波器、重采样和Hampel过滤器进行信号平滑处理
    Spring Boot Admin2 AdminServerAutoConfiguration详解
    0.1 前言
    京东数据分析:2023年9月京东笔记本电脑行业品牌销售排行榜
    vue项目切换页面白屏的解决方案
    C++标准模板(STL)- 类型支持 (std::size_t,std::ptrdiff_t,std::nullptr_t)
    Golang go-redis cluster模式下不断创建新连接,效率下降问题解决
  • 原文地址:https://blog.csdn.net/qq_53338931/article/details/127535266