⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 计算是哪天生的.asm

📁 你想知道你是哪天生的
💻 ASM
字号:

;**************头文件和导入库文件****************************
.386 
.model flat, stdcall 
option casemap:none 
;**************头文件和导入库文件****************************
include		windows.inc 
include		user32.inc 
include		kernel32.inc 
includelib 	user32.lib 
includelib 	kernel32.lib 
;**************equ******************************
 IDD_DIALOG1           equ          101
 IDB_BITMAP1          equ            104
 IDR_MENU1             equ           106
 IDI_ICON1              equ          107
 IDC_EDIT1             equ           1000
 IDC_EDIT2             equ           1001
 IDC_EDIT3             equ           1002
 IDC_EDIT4             equ           1003
 ID_MENUITEM40001       equ          40001
 ID_MENUITEM40003     equ            40003
 ID_MENUITEM40004      equ           40004
 ;**********************************************
 ;data
 ;**********************************************
 .data
 su    dd   0,31,59,90,120,151,181,212,243,273,304,334
 wan1  db '请输入正确的日期!',0
 wan3    db '不不起,我们只计算公元后的年份',0
 wan2  db '警告!',0
;**************data?****************************
.data? 
dwVal			DWORD	?
year            dd ?
month            dd ?
day               dd ?
temp              dd ?
off               dd ?
;**************代码段****************************
.code 
isrun proc year:dd
           local t1:dw
           local t2:dw
           local t3:dw
           local chu:dw
           mov eax,year
           mov chu,4
           xor edx,edx
           div chu
           mov t1,dx
           mov chu,100
           xor edx,edx
           div chu
           mov t2,dx
           xor edx,edx
           mov chu,400
           div chu
           mov t3,dx
           .if t1 == 0 && t2 != 0 || t3 == 0
           mov eax,1
           .else
           mov eax,0
           .endif
isrun endp
;====================================================================
; 对话框过程
;====================================================================
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 
    .if uMsg == WM_INITDIALOG 
        mov year, 2007
        invoke SetDlgItemInt, hWnd, IDC_EDIT1, year, FALSE
    .elseif uMsg == WM_CLOSE 
        invoke EndDialog, hWnd,NULL
    .elseif uMsg == WM_COMMAND 
        mov eax, wParam 
        .if ax == IDOK
        	invoke GetDlgItemInt, hWnd, IDC_EDIT1,NULL, TRUE
        	mov year,eax
        	invoke GetDlgItemInt, hWnd, IDC_EDIT2,NULL, FALSE
        	mov month,eax
        	invoke GetDlgItemInt, hWnd, IDC_EDIT3,NULL, FALSE
        	mov day,eax
        	invoke isrun,year
        	.if year < 0 
        	invoke MessageBox,NULL,addr wan3,addr wan2,MB_OK
        	.elseif ((day > 0 && day < 32 && month > 0 && month < 13 && month != 2) || (eax == 1 && month == 2 && day > 0 && day < 30)||(eax ==0 && month == 2 && day > 0 && day < 29))
        	mov temp,0
        	mov eax,month
        	dec eax
        	mov ebx,offset su
        	mov eax,[eax*4+ebx]
        	add eax,day
        	mov temp,eax
        	invoke isrun,year
        	.if eax == 1 && month > 2
        	inc temp
        	.endif
        	invoke SetDlgItemInt, hWnd, IDC_EDIT4, temp, FALSE
        	.else
        	invoke MessageBox,NULL,addr wan1,addr wan2,MB_OK
        	.endif
        .elseif ax == IDCANCEL
            mov dwVal,0
        	invoke SetDlgItemInt, hWnd, IDC_EDIT1, dwVal, FALSE
        	invoke SetDlgItemInt, hWnd, IDC_EDIT2, dwVal, FALSE
        	invoke SetDlgItemInt, hWnd, IDC_EDIT3, dwVal, FALSE
        	invoke SetDlgItemInt, hWnd, IDC_EDIT4, dwVal, FALSE
        .endif 
    .else 
        mov eax,FALSE 
        ret 
    .endif 
    mov eax,TRUE 
    ret 
DlgProc endp 
;====================================================================
; 主程序入口处
;====================================================================
start: 
	;----------------------------------------
	; 获取该程序实例句柄		
	;----------------------------------------
	invoke GetModuleHandle, NULL 		
	;----------------------------------------
	; 创建模式对话框	
	;----------------------------------------
    invoke DialogBoxParam, eax, IDD_DIALOG1 , NULL, DlgProc, NULL 	
	;----------------------------------------
    invoke ExitProcess, NULL 
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -