home *** CD-ROM | disk | FTP | other *** search
/ BURKS 2 / BURKS_AUG97.ISO / BURKS / SOFTWARE / LIBS / PMC101.ZIP / LIBSRC.ZIP / SCBSTUB.ASM (.txt) < prev    next >
Assembly Source File  |  1994-06-24  |  2KB  |  85 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  SETCBSTUB
  19.  
  20. _TEXT           segment byte public use32 'CODE'
  21. assume  cs:_TEXT, ds:DGROUP
  22.  
  23. SETCBSTUB:
  24.         push esi edi
  25.         cld
  26.  
  27.         mov edi,[esp+4+8+04h]
  28.         mov esi,offset cbstub
  29.  
  30.         mov ecx,CBSTUBLEN / 4
  31.         rep movsd
  32.         mov cl,CBSTUBLEN 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,CBSTUBLEN-CBSTUBM1OFF-4
  39.         mov [edi-CBSTUBLEN+CBSTUBM1OFF],eax
  40.         mov [edi-CBSTUBLEN+CBSTUBM0OFF-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. cbstub:
  51.         cld
  52.  
  53.         mov cx,2beah
  54. CBSTUBM0OFF     = $ - cbstub
  55.         mov ds,cx
  56.  
  57.         mov eax,_pmstacktop
  58.         mov edx,eax
  59.         sub edx,_pmstacklen
  60.         mov _pmstacktop,edx
  61.         mov dx,ss
  62.         mov ss,cx
  63.         xchg esp,eax
  64.         push eax edx
  65.  
  66.         push edi
  67.                 db 0e8h
  68. CBSTUBM1OFF     = $ - cbstub
  69.                 dd 2beaddedh
  70.         mov edi,eax
  71.  
  72.         pop edx eax
  73.         mov ss,dx
  74.         mov esp,eax
  75.         mov eax,_pmstacklen
  76.         add _pmstacktop,eax
  77.  
  78.         iretd
  79.  
  80. CBSTUBLEN       = $ - cbstub
  81.  
  82. _DATA           ends
  83. end
  84.  
  85.