工作一直没有着落,手上的事情却都搁置不顾。心态每况愈下,无一丝慰籍。
无聊之余,想到以后写程序时或许会用到些代码。现在想出一点,打发时间。
用 YONSM 的 DEBUGTRACE 时 甚感舒服,可惜ABOUT上只有C的调用代码,于是写段 WIN32ASM 的代码,以后改进。
code:
01 .386
02 .model flat, stdcall
03 option casemap :none
04 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
05 ; Include 文件定义
06 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
07 include \masm32\include\windows.inc
08 include \masm32\include\kernel32.inc
09 include \masm32\include\user32.inc
10 include \masm32\include\masm32.inc
11
12 includelib \masm32\lib\kernel32.lib
13 includelib \masm32\lib\user32.lib
14 includelib \masm32\lib\masm32.lib
15 include \masm32\macros\macros.asm
16 include \masm32\macros\strings.mac
17 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18 ; Equ 等值定义
19 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20 EbNetBuffer_s struct
21
22 next dd ?
23 char dd ?
24 buffer dd ?
25 alength dd ?
26
27 EbNetBuffer_s ends
28
29 .data?
30 EbNetBuffer EbNetBuffer_s <?>
31 hInstance dd ?
32 szbuffer db 1024 dup (?)
33
34 .code
35 DbgPrint proc uses ebx edi esi debugcommon:dword,debugvalue:dword
36 local @buffer[256]:BYTE
37 local @addr[64]:BYTE
38
39 mov eax, ebp
40 add eax, 4h
41 mov eax, [eax]
42 sub eax, 5h
43 invoke wsprintf, addr @addr, $CTA0("addr:00%lXh || "), eax
44 invoke wsprintf, addr @buffer, debugcommon, debugvalue
45 invoke lstrcat, addr @addr, addr @buffer
46 invoke OutputDebugString, addr @addr
47 ret
48 DbgPrint endp
49
50 start:
51 invoke GetModuleHandle,NULL
52 mov hInstance,eax
53 invoke RtlZeroMemory, addr EbNetBuffer, sizeof EbNetBuffer
54 mov [EbNetBuffer.next],31323334h
55 mov [EbNetBuffer.char], 'abcd'
56 invoke DbgPrint, $CTA0("values is :%s"), addr EbNetBuffer
57 invoke ExitProcess,NULL
58 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59 end start
60
DbgPrint ,为了和 DebugPrint 有所区分,起了这个名字。相信以后会有用的,呵呵……