home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BURKS 2
/
BURKS_AUG97.ISO
/
BURKS
/
SOFTWARE
/
LIBS
/
PMC101.ZIP
/
LIBSRC.ZIP
/
SCBSTUB.ASM
(
.txt
)
< prev
next >
Wrap
Assembly Source File
|
1994-06-24
|
2KB
|
85 lines
.386p
locals
_TEXT segment byte public use32 'CODE'
_TEXT ends
_DATA segment dword public use32 'DATA'
_DATA ends
_BSS segment dword public use32 'BSS'
_BSS ends
DGROUP group _DATA, _BSS
assume cs:_TEXT, ds:DGROUP
extrn _code_data:dword
extrn _pmstacktop:dword
extrn _pmstacklen:dword
public SETCBSTUB
_TEXT segment byte public use32 'CODE'
assume cs:_TEXT, ds:DGROUP
SETCBSTUB:
push esi edi
cld
mov edi,[esp+4+8+04h]
mov esi,offset cbstub
mov ecx,CBSTUBLEN / 4
rep movsd
mov cl,CBSTUBLEN and 3
rep movsb
mov eax,[esp+4+8+00h]
sub eax,_code_data
sub eax,edi
add eax,CBSTUBLEN-CBSTUBM1OFF-4
mov [edi-CBSTUBLEN+CBSTUBM1OFF],eax
mov [edi-CBSTUBLEN+CBSTUBM0OFF-2],ds
pop edi esi
ret 08h
_TEXT ends
_DATA segment dword public use32 'DATA'
assume cs:_DATA, ds:DGROUP
cbstub:
cld
mov cx,2beah
CBSTUBM0OFF = $ - cbstub
mov ds,cx
mov eax,_pmstacktop
mov edx,eax
sub edx,_pmstacklen
mov _pmstacktop,edx
mov dx,ss
mov ss,cx
xchg esp,eax
push eax edx
push edi
db 0e8h
CBSTUBM1OFF = $ - cbstub
dd 2beaddedh
mov edi,eax
pop edx eax
mov ss,dx
mov esp,eax
mov eax,_pmstacklen
add _pmstacktop,eax
iretd
CBSTUBLEN = $ - cbstub
_DATA ends
end