home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / dos_ency / 12 / set_int.asm < prev   
Encoding:
Assembly Source File  |  1988-08-11  |  1.4 KB  |  33 lines

  1. _DATA   segment para public 'DATA'
  2. oldint1b dd     0               ; original INT 1BH vector
  3. oldint23 dd     0               ; original INT 23H vector
  4. _DATA   ends
  5. _TEXT   segment byte public 'CODE'
  6.         assume cs:_TEXT,ds:_DATA,es:NOTHING
  7. myint1b:                        ; handler for Ctrl-Break
  8. myint23:                        ; handler for Ctrl-C
  9.         iret
  10.  
  11. set_int proc    near
  12.         mov     ax,351bh        ; get current contents of
  13.         int     21h             ; Int 1BH vector and save it
  14.         mov     word ptr oldint1b,bx
  15.         mov     word ptr oldint1b+2,es
  16.         mov     ax,3523h        ; get current contents of
  17.         int     21h             ; Int 23H vector and save it
  18.         mov     word ptr oldint23,bx
  19.         mov     word ptr oldint23+2,es
  20.         push    ds              ; save our data segment
  21.         push    cs              ; let DS point to our
  22.         pop     ds              ; code segment
  23.         mov     dx,offset myint1b
  24.         mov     ax,251bh        ; set interrupt vector 1BH
  25.         int     21h             ; to point to new handler
  26.         mov     dx,offset myint23
  27.         mov     ax,2523h        ; set interrupt vector 23H
  28.         int     21h             ; to point to new handler
  29.         pop     ds              ; restore our data segment
  30.         ret                     ; back to caller
  31. set_int endp
  32. _TEXT   ends
  33.