编程入门 软件工程 JAVA .NET Delphi Visual C C++Builder Visual Basic C/C++ PowerBuilder汇编语言 数据结构&算法 破解与加脱壳 移动开发 其它
返回首页

汇编的的各类源码--BRK2

时间:2006-09-20来源: 作者: 点击:
T99vLE BRK2 -- Break Handling Utilities ModuleTRUE EQU 01H ;boolean trueFALSE EQU 00H ;boolean falseBREAKINT EQU 23H ;dos control-break intrptGETVECTOR EQU 35H ;dos get vector functionSETVECTOR EQU 25H ;dos set vector functionDOS_FUNCTION E
T99vLE   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


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片
推荐内容