📄 smb_fcn.asm
字号:
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].EDD ; Pass the hex dword
push fs:[bx+di].EDD ; ...
push ds ; ... ptr to format string
push offset ds:MSG_DHDWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+4+4 ; Strip arguments from stack
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_DHDWORD endp ; End SMB_DHDWORD procedure
NPPROC SMB_HEXBYTE -- Display A Hex Byte
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Byte from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].ELO ; Pass the hex byte
push ds ; ... ptr to format string
push offset ds:MSG_HEXBYTE ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+2 ; Strip arguments from stack
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXBYTE endp ; End SMB_HEXBYTE procedure
NPPROC SMB_HEXBYTEUNK -- Display A Hex Byte w/Unknown
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Byte w/Unknown from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
movzx ax,fs:[bx+di].LO ; Get the hex byte (zero to use as word)
cmp al,[bp].SMBarg.argSMB_SPC2.EDQLO.ELO.LO ; Izit unknown value?
jne short @F ; Jump if not
push ds ; Pass ptr to string
push offset ds:MSG_UNK_VAL ; ...
call DispASCIIZ ; Display ASCIIZ string
jmp short SMB_HEXBYTEUNK_EXIT ; Join common exit code
@@:
push ax ; Pass the hex byte (as word)
push ds ; ... ptr to format string
push offset ds:MSG_HEXBYTE ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+2 ; Strip arguments from stack
SMB_HEXBYTEUNK_EXIT:
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXBYTEUNK endp ; End SMB_HEXBYTEUNK procedure
NPPROC SMB_HEXWORD -- Display A Hex Word
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Word from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].ELO ; Pass the hex word
push ds ; ... ptr to format string
push offset ds:MSG_HEXWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+2 ; Strip arguments from stack
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXWORD endp ; End SMB_HEXWORD procedure
NPPROC SMB_HEXWORDUNK -- Display A Hex Word w/Unknown
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Word w/Unknown from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
mov ax,fs:[bx+di].ELO ; Get the hex word
cmp ax,[bp].SMBarg.argSMB_SPC2.EDQLO.ELO ; Izit unknown value?
jne short @F ; Jump if not
push ds ; Pass ptr to string
push offset ds:MSG_UNK_VAL ; ...
call DispASCIIZ ; Display ASCIIZ string
jmp short SMB_HEXWORDUNK_EXIT ; Join common exit code
@@:
push ax ; Pass the hex word
push ds ; ... ptr to format string
push offset ds:MSG_HEXWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+2 ; Strip arguments from stack
SMB_HEXWORDUNK_EXIT:
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXWORDUNK endp ; End SMB_HEXWORDUNK procedure
NPPROC SMB_HEXDWORD -- Display A Hex Dword
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Dword from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].EDD ; Pass the hex dword
push ds ; ... ptr to format string
push offset ds:MSG_HEXDWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+4 ; Strip arguments from stack
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXDWORD endp ; End SMB_HEXDWORD procedure
NPPROC SMB_HEXDWORDUNK -- Display A Hex Dword w/Unknown
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Dword w/Unknown from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pushad ; Save all EGP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
mov eax,fs:[bx+di].EDD ; Get the hex dword
cmp eax,[bp].SMBarg.argSMB_SPC2.EDQLO ; Izit unknown value?
jne short @F ; Jump if not
push ds ; Pass ptr to string
push offset ds:MSG_UNK_VAL ; ...
call DispASCIIZ ; Display ASCIIZ string
jmp short SMB_HEXDWORDUNK_EXIT ; Join common exit code
@@:
push eax ; Pass the hex dword
push ds ; ... ptr to format string
push offset ds:MSG_HEXDWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+4 ; Strip arguments from stack
clc ; Mark as successful
SMB_HEXDWORDUNK_EXIT:
popad ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXDWORDUNK endp ; End SMB_HEXDWORDUNK procedure
NPPROC SMB_HEXQWORD -- Display A Hex Qword
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Qword from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].EDQLO ; Pass the low-order hex qword
push fs:[bx+di].EDQHI ; Pass high-...
push ds ; ... ptr to format string
push offset ds:MSG_HEXQWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+8 ; Strip arguments from stack
clc ; Mark as successful
popa ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXQWORD endp ; End SMB_HEXQWORD procedure
NPPROC SMB_HEXQWORDUNK -- Display A Hex Qword w/Unknown
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Hex Qword w/Unknown from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pushad ; Save all EGP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
mov edx,fs:[bx+di].EDQHI ; Get the high-order hex dword
mov eax,fs:[bx+di].EDQLO ; ... low-...
cmp eax,[bp].SMBarg.argSMB_SPC2.EDQLO ; Izit unknown value?
jne short @F ; Jump if not
cmp edx,[bp].SMBarg.argSMB_SPC2.EDQHI ; Izit unknown value?
jne short @F ; Jump if not
push ds ; Pass ptr to string
push offset ds:MSG_UNK_VAL ; ...
call DispASCIIZ ; Display ASCIIZ string
jmp short SMB_HEXQWORDUNK_EXIT ; Join common exit code
@@:
push eax ; Pass the low-order hex dword
push edx ; ... high-...
push ds ; ... ptr to format string
push offset ds:MSG_HEXQWORD ; ...
push lpOutput ; ... ptr to output routine
call RPRINTF16 ; Rprintf it, return with AX = # chars printed
add sp,4+4+8 ; Strip arguments from stack
SMB_HEXQWORDUNK_EXIT:
clc ; Mark as successful
popad ; Restore
lclEPILOG SMB_STR ; Strip local vars and return
assume ds:nothing,es:nothing,fs:nothing,gs:nothing,ss:nothing
SMB_HEXQWORDUNK endp ; End SMB_HEXQWORDUNK procedure
NPPROC SMB_HANDLE -- Display A Handle
assume ds:DGROUP,es:nothing,fs:nothing,gs:nothing,ss:nothing
COMMENT|
Display a Handle from FS.
On entry:
FS = Struc Segment
SS:BP ==> SMB_STR (after lclPROLOG)
On exit:
CF = 0 if successful
= 1 if not
|
lclPROLOG SMB_STR ; Address local vars
pusha ; Save all GP registers
; Display the leading text, unless asked not to
test LCL_FLAG,@LCL_XLEAD ; Skip displaying leading text?
jnz short @F ; Jump if so
push ds ; Pass ptr to string
push [bp].SMBarg.argSMB_TEXT ; ...
call DispASCIIZ ; Display ASCIIZ string
@@:
mov di,[bp].SMBarg.argSMB_START ; Get struc start
mov bx,[bp].SMBarg.argSMB_OFFS ; ... offset
push fs:[bx+di].ELO ; Pass the hex word
push ds ; ... ptr to format string
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -