| 网站首页 | 电脑论坛 | 计算机原理 | 电脑主板 | cpu中央处理器 | 内存 | 硬盘 | 软驱 | 光驱 | usb设备 | 显卡 | 
 | 显示器 | 声卡 | 电脑音箱 | 耳机耳麦 | 网卡 | 局域网的组建 | 鼠标 | 键盘 | 电脑电源 | 电脑机箱 | 电脑组装与维修 | 
 | 电脑摄像头 | 网友留言 | 网站地图 | 网站地图2 | 
您现在的位置: 电脑硬件知识网 >> 计算机原理 >> 中断系统 >> 文章正文  
自编中断服务程序举例         ★★★
自编中断服务程序举例
作者:陆志才 文章引用自“微型计算机组成原理”(高教出版社,南开大学2003)点击数: 更新时间:2007-2-22 23:09:01
 

 自编中断服务程序举例

    这里先举一个完整的自己能上机练习的中断服务程序例子。在第六章中介绍完可编程计数器/定时器8253后再举一例(Pc系列机中加入一个用户中断源——可编程定时中),说明在PC系列机中加入一个用户中断源应做的工作。

      利用1CH软中断作定时处理——每次进入1CH中断时显示一个“*”,18次后显示一个字符串“second()

    关于1CH软中断,前面已经介绍,是留给用户进行定时处理的“软接口”。在软时钟中断(中断类型号为08H)处理过程中,要调用一次INT 1CH软中断。系统本身(DOS)1cH中断服务程序中仅安排了一条中断返回指令,即什么也没有做,直接返回。所以,用户可重新编写1CH的中断服务程序,在其中加入自己所需的定时处理。下面是用Turbo C编写的1CH中断服务程序以及对1CH中断进行设置的主程序的清单。编译、连接,形成可执行文件后便可运行(DOS环境下)

    #include<dosh>

    union REGS inout

    int U=0

    char fg=0

    void interrupt(*old intlc)(void)  *定义old_intlc为中断函数指针*

    void interrupt new_intle()    *自编的1CH中断服务程序*

    {inhah=OxOe    *调用BIOS功能显示字符'*'*

    inhal='*'

    inhbh=0

    int86(0x10&in&out)

    n++if(n>=18){n=0fg=1}

    }

    main()

    {old_intle=getvect(Oxlc)  *取原ICH中断向量*

    setveet(0xlcnew_intlc)    *置新的1CH中断向量*

    for(;;)

    {if(fg==1){pfinff("second")fg=0}

    if(bioskey(1)!=0)    *按任一键,恢复原1CH中断向量,程序结束*

    {setvect(0xlcold_intle)exit(O){

    }

  程序中已作了一些注解,但还需要说明几点:

  ①程序的第二行定义inoutunion(联合)REGS类型的变量,一个用作C语言BIOS能调用(int86)的输入变量,另一个作输出变量。联合REGS在头文件dosh中作了定义(以要引用DOSH),定义如下:

    struct WORDREGS

    {unsigned int axbxcxdxsidicflagflags}

struct BYTEREGS

    {unsigned char alahblbhclchdldh

    union REGS

    {struct WORDREGS x

    struct BYTEREGS h;

    }

  可见,REGS是结构WORDREGS和结构BYTEREGS的联合。这样,在c语言中可直接对寄存器进行操作。例如,通过inxax可引用16位寄存器Ax,通过inhah可引用8位寄存AH

    ②在turbo c中,中断服务程序是用类型为interrupt的函数表示的,函数名即为中断服务程序入口地址。所以在Turbo c中编写中断服务程序是相当方便的。

  ③在上述程序清单中没有见到保护现场和恢复现场,实际上这是由 Turbo C编译程序自动安排的(从编译的目标代码中可看到保护现场和恢复现场,且现场考虑得较全)

  ④自编的中断服务程序开始的4行为调用BIOS功能显示字符“*”,这相当于下面的汇编语言程序段:

    MOV AHOEH

    MOV AL'*'

    MOV BH,O

    INT 10H    ;在当前光标处显示一个字符

  ⑤软中断服务结束不需要发中断结束命令。中断结束命令只有外部可屏蔽硬中断才需要。

本篇文章属于主题:PC/AT机的中断系统,了解更多请点击:PC/AT机的中断系统
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目

    电脑硬件知识站导读

    最 新 热 门

    最 新 推 荐
    相 关 文 章
    中断处理过程
    中断源及外部可屏蔽中断…
    中断向量与中断向量表
    PC/AT机的中断系统
    最 新 文章
    文章 下载 图片
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
            我与电脑共舞