呵呵,也行那,就是怕有时看不到你们老人家在,找不到人问了那..
现在我整个程序重新修改了一下,但不知道为什么运行后那个调用显示字符的框没有出现,麻烦重新帮我看一下是哪里问题.
子函数:
string proc str1:DWORD,str2:DWORD,bz1:DWORD
cmp bz1,0
je jiami
jmp jiemi
jiami:
mov esi,offset s
lea edi,str1
;把s1的有效地址装入edi
mov al,[esi] ;如果进行字节操作,注意用al
cmp al,0
je L1
shl al,1
add al,3
mov [edi],al
inc byte ptr [esi]
inc byte ptr [edi]
mov al,[esi] ;进行字操作的话就用ax,类推
jmp jiami
jiemi:
lea esi,str1
lea edi,str2
;把s1的有效地址装入edi
mov al,[esi] ;如果进行字节操作,注意用al
sub al,3
shr al,1
mov [edi],al
inc byte ptr [edi]
inc byte ptr [esi]
mov al,[esi]
cmp al,0
je L2
jmp jiemi
L1:
mov [edi],al
invoke MessageBox,0,addr str1,addr mtl,MB_OK
L2:
mov [edi],al
invoke MessageBox,0,addr str2,addr mtl,MB_OK
string endp
从主函数调用的地方:
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov
eax,uMsg
.if eax==WM_INITDIALOG
.elseif eax==WM_COMMAND
mov
eax,wParam
.if eax==1001
mov
eax,wParam
.if eax==1001
mov bz,0
invoke string,addr s,addr s1,bz
.if eax==1002
mov bz,1
invoke string,addr s1,addr s2,bz
.endif
.endif
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
.else
mov
eax,FALSE
ret
.endif
mov
eax,TRUE
ret
DlgProc endp
顺便弱弱的说句:原来mm是属于关键字的,汗.....