| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1437 人关注过本帖
标题:请问如何禁止中断?
只看楼主 加入收藏
gyx2545965
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-17
收藏
 问题点数:0 回复次数:5 
请问如何禁止中断?
如题,为什么我用cli不能禁止时间中断呢?
搜索更多相关主题的帖子: 如何 
2007-12-08 13:16
gyx2545965
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-17
收藏
得分:0 
一个从子程序程序进,中断出的程序
DATAS SEGMENT
    tmp dw 0
DATAS ENDS

STACKS SEGMENT
      dw 50 dup(?)   
smain dw ?
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,stacks
    mov ss,ax

    mov sp,smain  ;堆栈顶指向smain

    mov ah,35h    ;获得原来旧的时钟中断向量
    mov al,1ch
    int 21h
    push es       ;进嶘保护
    push bx
   
    cli           ;屏蔽中断
   
    push ds
    mov dx,offset ppp   ;设置新的时钟中断向量
    mov ax,cs
    mov ds,ax
    mov ah,25h
    mov al,1ch
    int 21h
    pop ds
        
    in al,21h      ;设置掩码
    and al,0feh
    out 21h,al
   
    mov ah,02     ;显示一个字符1
    mov dl,'1'
    int 21h
         
    pushf         ;标志和cs段进嶘,模拟中断过程
    push cs
    call sub2     ;调用子程序sub2, 此时应该是flag,cs,ip都进嶘了,和中断一直了!
     
    mov ah,02      ;显示字符2,看看程序是否返回了!
    mov dl,'2'
    int 21h      
   
    pop dx         ;恢复原来的中断向量
    pop ds
    mov ah,25h
    mov al,1ch
    int 21h
   
    MOV AH,4CH     ;返回到dos
    INT 21H
    ret
ppp proc near      ;中断服务函数

    mov ax,datas   
    mov ds,ax
   
    mov ah,02      ;显示字符'y'
    mov dl,'y'  
    int 21h
   
    mov ax,tmp
    mov sp,ax
   
    iret
ppp endp   

sub2 proc near
     
     mov tmp,sp    ;将此时的sp保存起来   
        
     mov ah,02     ;显示一个字符'g',看是否运行到了子函数
     mov dl,'g'
     int 21h
     sti           ;允许中断
     jmp $         ;这里是死循环,代表sub2无法在返回主函数了,只能通过中断返回
     ret
sub2 endp  
CODES ENDS
      end start
整个程序都能跑完,但最后dos好像卡死一样,什么反应也没有了

2007-12-08 13:52
gyx2545965
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-17
收藏
得分:0 
自己在顶一下

2007-12-08 17:30
kr^zHaYj
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-11-25
收藏
得分:0 
时钟 是可屏蔽的吗??
2007-12-08 18:24
lmango
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-12-6
收藏
得分:0 
帮你顶顶~林下先~
2007-12-09 00:35
sccdyc
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-23
收藏
得分:0 
是NMI

2008-01-12 08:51
快速回复:请问如何禁止中断?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019258 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved