home *** CD-ROM | disk | FTP | other *** search
/ BURKS 2 / BURKS_AUG97.ISO / BURKS / SOFTWARE / LIBS / PMC101.ZIP / LIBSRC.ZIP / SPMSTUB.ASM (.txt) < prev    next >
Assembly Source File  |  1994-06-29  |  2KB  |  90 lines

  1. .386p
  2. locals
  3.  
  4. _TEXT           segment byte public use32 'CODE'
  5. _TEXT           ends
  6. _DATA           segment dword public use32 'DATA'
  7. _DATA           ends
  8. _BSS            segment dword public use32 'BSS'
  9. _BSS            ends
  10.  
  11. DGROUP          group   _DATA, _BSS
  12. assume  cs:_TEXT, ds:DGROUP
  13.  
  14. extrn   _code_data:dword
  15. extrn   _pmstacktop:dword
  16. extrn   _pmstacklen:dword
  17.  
  18. public  SETPMSTUB
  19.  
  20. _TEXT           segment byte public use32 'CODE'
  21. assume  cs:_TEXT, ds:DGROUP
  22.  
  23. SETPMSTUB:
  24.         push esi edi
  25.         cld
  26.  
  27.         mov edi,[esp+4+8+04h]
  28.         mov esi,offset pmirqstub
  29.  
  30.         mov ecx,PMIRQSTUBLEN / 4
  31.         rep movsd
  32.         mov cl,PMIRQSTUBLEN and 3
  33.         rep movsb
  34.  
  35.         mov eax,[esp+4+8+00h]
  36.         sub eax,_code_data
  37.         sub eax,edi
  38.         add eax,PMIRQSTUBLEN-PMIRQSTUBM1OFF-4
  39.         mov [edi-PMIRQSTUBLEN+PMIRQSTUBM1OFF],eax
  40.         mov [edi-PMIRQSTUBLEN+PMIRQSTUBM0OFF-2],ds
  41.  
  42.         pop edi esi
  43.         ret 08h
  44.  
  45. _TEXT           ends
  46.  
  47. _DATA           segment dword public use32 'DATA'
  48. assume  cs:_DATA, ds:DGROUP
  49.  
  50. pmirqstub:
  51.         push eax ebx ecx edx
  52.         push ds es fs gs
  53.         cld
  54.  
  55.         mov cx,2beah
  56. PMIRQSTUBM0OFF  = $ - pmirqstub
  57.         mov ds,cx
  58.         mov es,cx
  59.  
  60.         mov eax,_pmstacktop
  61.         mov edx,eax
  62.         sub edx,_pmstacklen
  63.         mov _pmstacktop,edx
  64.         mov dx,ss
  65.         mov ss,cx
  66.         xchg esp,eax
  67.         push eax edx
  68.  
  69.                 db 0e8h
  70. PMIRQSTUBM1OFF  = $ - pmirqstub
  71.                 dd 2beaddedh
  72.  
  73.         pop edx eax
  74.         mov ss,dx
  75.         mov esp,eax
  76.         mov eax,_pmstacklen
  77.         add _pmstacktop,eax
  78.  
  79.         pop gs fs es ds
  80.         pop edx ecx ebx eax
  81.  
  82.         sti
  83.         iretd
  84.  
  85. PMIRQSTUBLEN    = $ - pmirqstub
  86.  
  87. _DATA           ends
  88. end
  89.  
  90.