请问谁能帮我调试一下看看是哪里出问题了!
这道题的意思是从主函数传递过三个实参,根据BZ的值执行加密和解密,加密为原字符*2+3,最后调用一个窗口显示加密或解密后的字符串.在这也要感谢两位热心版主的解答...整道题编完后没有结果,不知道哪里出问题了,编译的能通过,不过我不会调试...
主函数:
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
子函数:
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