您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:1来源:未知


TITLE   BRK2 -- Break Handling Utilities Module



TRUE            EQU     01H                     ;boolean true

FALSE           EQU     00H                     ;boolean false

BREAKINT        EQU     23H                     ;dos control-break intrpt

GETVECTOR       EQU     35H                     ;dos get vector function

SETVECTOR       EQU     25H                     ;dos set vector function

DOS_FUNCTION    EQU     21H                     ;dos function call



BREAK           SEGMENT PUBLIC  'CODE'

BREAKFLAG       DB      0H                      ;break key hit flag

SAVEBRK         DD      0H                      ;saved break vec. contents

                ASSUME  CS:BREAK

                ASSUME  DS:NOTHING



;CHECK_BREAK    checks if ctrl-break has been pressed.  It returns

;true if ctrl-break has been pressed and false if it hasn't.



                PUBLIC  CHECK_BREAK

CHECK_BREAK     PROC    FAR

                XOR     AX, AX                  ;clear ax

                MOV     AL, BREAKFLAG           ;return value = breakflag

                MOV     BREAKFLAG, FALSE        ;reset breakflag

                RET

CHECK_BREAK     ENDP



;INSTALL_BREAK_HANDLER  sets up a ctrl-break interrupt handler.  It

;also saves the address of the former break handler so that it can

;be restored later.



                PUBLIC  INST_BRK_HANDLR

INST_BRK_HANDLR PROC    FAR

                PUSH    DS

                MOV     AL, BREAKINT            ;AL = break interrupt

                MOV     AH, GETVECTOR           ;AH = dos function code

                INT     DOS_FUNCTION            ;call dos

                MOV     WORD PTR SAVEBRK, BX    ;save offset in int vector

                MOV     WORD PTR SAVEBRK 2, ES  ;save base in int vector

                MOV     AL, BREAKINT            ;AL = break interrupt

                MOV     AH, SETVECTOR           ;AH = dos function code

                MOV     DX, OFFSET BRK_HANDLER  ;DX = offset of brk handler

                MOV     BX, CS                  ;BX = this segment

                MOV     DS, BX                  ;DS = this segment

                INT     DOS_FUNCTION            ;call dos

                POP     DS

                RET

INST_BRK_HANDLR ENDP



;BRK_HANDLER    is invoked by the bios when ctrl_break is pressed



BRK_HANDLER     PROC    FAR

                MOV     BREAKFLAG, TRUE         ;breakflag = yes, break hit

                IRET

BRK_HANDLER     ENDP



;REMOVE_BREAK_HANDLER restores the previous ctrl-break handler



REM_BRK_HANDLR  PROC    FAR

                PUSH    DS

                MOV     AL, BREAKINT            ;AL = break interrupt

                MOV     AH, SETVECTOR           ;AH = dos function code

                MOV     DX, WORD PTR SAVEBRK    ;DX = saved 1st word

                MOV     BX, WORD PTR SAVEBRK 2  ;BX = saved 2nd word

                MOV     DS, BX                  ;DS = saved 2nd word

                INT     DOS_FUNCTION            ;call dos

                POP     DS

                RET

REM_BRK_HANDLR  ENDP

BREAK           ENDS

                END

 

本页地址
相关文章

汇编源码--sertype
硬盘保护锁
汇编源码--DOSSYM
读寄存器内容的源代码
汇编语言的艺术(组合语言的艺术)--准备工
Casl汇编语言辅导(2)
汇编语言上机指导及例示
"hello,world!"win32汇编小程序
汇编语言---程式设计 (4)
汇编语言的艺术(组合语言的艺术)--观念正
Game Faster V1.0
汇编源码--BRK
汇编源码--chips
通用的图形字模和汉字字模汇编程序
汇编源码--free
侦测CPU型号
汇编源码--gameport
汇编源码--cdcheck
汇编源码--drives
汇编源码--CLR

相关评论


本文章所属分类:首页 汇编技术