Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- .MODEL FLAT, STDCALL
- OPTION CASEMAP :NONE ;Case sensitive
- IDC_OK EQU 1003
- IDC_ADD EQU 1004
- IDC_FIRSTNUMBEREDIT EQU 1001
- IDC_SECONDNUMBEREDIT EQU 1002
- IDC_SECONDNUMBERLABEL EQU 1006
- IDC_FIRSTNUMBERLABEL EQU 1007
- IDC_RESULTLABEL EQU 1008
- IDC_SUB EQU 1011
- IDC_MUL EQU 1012
- IDC_DIV EQU 1013
- Include base.inc
- .DATA
- error db "Error",0
- divZero db "Divided by 0",0
- buffer db 50 dup (0)
- format db "%d.%d",0
- .DATA?
- remain dd ?
- .CODE
- Start:
- Invoke GetModuleHandle, EAX
- Invoke DialogBoxParam, EAX, 101, 0, ADDR DlgProc, 0
- Invoke ExitProcess, EAX
- DlgProc Proc hWin:DWORD, uMsg:DWORD, wParam :DWORD, lParam :DWORD
- CMP uMsg,WM_CLOSE
- JE CLOSE
- JMP COMMAND
- CLOSE:
- Invoke EndDialog,hWin,0
- ret
- COMMAND:
- CMP wParam,IDC_ADD
- JE ADDFUNC
- CMP wParam,IDC_SUB
- JE SUBFUNC
- CMP wParam,IDC_MUL
- JE MULFUNC
- CMP wParam,IDC_DIV
- JE DIVFUNC
- CMP wParam,IDC_OK
- JE CLOSE
- JMP FINISH
- ADDFUNC:
- Invoke GetDlgItemInt,hWin,IDC_FIRSTNUMBEREDIT,NULL,TRUE
- PUSH EAX
- Invoke GetDlgItemInt,hWin,IDC_SECONDNUMBEREDIT,NULL,TRUE
- POP EBX
- ADD EBX,EAX
- Invoke SetDlgItemInt,hWin,IDC_RESULTLABEL,EBX,TRUE
- JMP FINISH
- SUBFUNC:
- Invoke GetDlgItemInt,hWin,IDC_FIRSTNUMBEREDIT,NULL,TRUE
- PUSH EAX
- Invoke GetDlgItemInt,hWin,IDC_SECONDNUMBEREDIT,NULL,TRUE
- POP EBX
- SUB EBX,EAX
- Invoke SetDlgItemInt,hWin,IDC_RESULTLABEL,EBX,TRUE
- JMP FINISH
- MULFUNC:
- Invoke GetDlgItemInt,hWin,IDC_FIRSTNUMBEREDIT,NULL,TRUE
- PUSH EAX
- Invoke GetDlgItemInt,hWin,IDC_SECONDNUMBEREDIT,NULL,TRUE
- POP EBX
- MUL EBX
- Invoke SetDlgItemInt,hWin,IDC_RESULTLABEL,EAX,TRUE
- JMP FINISH
- DIVFUNC:
- Invoke GetDlgItemInt,hWin,IDC_FIRSTNUMBEREDIT,NULL,TRUE
- PUSH EAX
- Invoke GetDlgItemInt,hWin,IDC_SECONDNUMBEREDIT,NULL,TRUE
- CMP EAX,0
- JE DIVZERO
- MOV EBX,EAX
- POP EAX
- DIV EBX
- PUSH EAX
- MOV EAX,EDX
- MOV ECX,10
- MUL ECX
- DIV EBX
- MOV EDX,EAX
- POP EAX
- Invoke wsprintf,ADDR buffer,ADDR format,EAX,EDX
- Invoke SetDlgItemText,hWin,IDC_RESULTLABEL,ADDR buffer
- JMP FINISH
- DIVZERO:
- Invoke MessageBox,NULL,addr divZero,addr error,MB_OK
- RET
- FINISH:
- XOR EAX,EAX
- XOR EDX,EDX
- XOR EBX,EBX
- XOR ECX,ECX
- ret
- DlgProc EndP
- End Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement