Soyez le premier à donner votre avis sur cette source.
Vue 8 017 fois - Téléchargée 327 fois
.586 .model flat, stdcall option casemap :none option prologue:none option epilogue:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib IDD_APP EQU 101 ID_TXT EQU 1000 .data htxt DD 0 szappname DB "Palindrome",0 .code start: ALIGN 4 push 0 call GetModuleHandle push 0 push offset AppDlgProc push 0 push IDD_APP push eax call DialogBoxParam progEnd: push 0 call ExitProcess AppDlgProc PROC ; callback evenements de fenetre mov eax, [esp+8] ; EAX = message mov edx, [esp+12] ; EDX = wParam mov ecx, [esp+4] ; ECX = hdlg cmp eax, WM_COMMAND je short onCOMMAND cmp eax, WM_INITDIALOG je short onINITDIALOG xor eax, eax ret 16 onINITDIALOG: lea eax, [esp-44] xor edx, edx mov dword ptr[eax+4], IDI_APPLICATION mov dword ptr[eax+12], GCL_HICON mov [eax+8], ecx mov [eax], edx mov [eax+20], ecx mov dword ptr[eax+24], ID_TXT mov [eax+40], edx mov esp, eax mov dword ptr[eax+36], 59 mov dword ptr[eax+32], EM_SETLIMITTEXT call LoadIcon mov [esp+8], eax call SetClassLong call GetDlgItem mov [esp], eax mov htxt, eax call SendMessage ret 16 onCOMMAND: ; EDX = wParam cmp edx, IDOK je short onOK cmp edx, IDCANCEL je short onCANCEL ret 16 onCANCEL: push 0 push ecx call EndDialog ret 16 onOK: sub esp, 72 ; szbuff[60]+GetWindowText(12) mov ecx, htxt lea eax, [esp+12] ; adr szbuff(ma chaine) mov dword ptr[esp+8], 60 mov [esp], ecx mov [esp+4], eax call GetWindowText mov eax, esp ; param szbuff pour Palindrome call Palindrome mov ecx, esp ; adr szbuff(ma chaine) test eax, eax mov edx, [esp+64] ; hdlg jne short palOK mov dword ptr[ecx], 4E4F4Eh ; "NON",0 jmp short msgResult palOK: mov dword ptr[ecx], 49554Fh ; "OUI",0 msgResult: push MB_ICONINFORMATION push offset szappname push ecx push edx call MessageBox add esp, 60 ret 16 AppDlgProc ENDP Palindrome PROC ; *psz dans EAX xor ecx, ecx mov edx, eax L1: cmp byte ptr[eax], cl je short L2 inc eax jmp short L1 L2: dec eax cmp edx, eax jae short plndExit ; chaine vide OK L3: ; BOUCLAGE SUR CHAINE cmp byte ptr[eax], 32 jne short verif1 dec eax jmp short L3 verif1: cmp edx, eax jae short plndExit ; OK L4: cmp byte ptr[edx], 32 jne short verif2 inc edx jmp short L4 verif2: cmp edx, eax mov cl, [eax] jae short plndExit ; OK cmp cl, [edx] jne short palindBAD inc edx dec eax cmp edx, eax jb short L3 ret 0 palindBAD: xor eax, eax plndExit: ret 0 Palindrome ENDP end start
Le temps de le recomposer et je le remplace.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.