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

📄 timer.asm

📁 windows汇编语言程序设计 吴中平著 一书所附所有源代码。 该书重点讲解了Windows环境下汇编语言程序设计的基本原理及其实现过程
💻 ASM
字号:
include head.inc
ModalDlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.const
IDD_DIALOG                 equ  101
IDC_TEXT                     equ 1000
.data
WeekNum db "天一二三四五六",0
TitleName db "定时器",0
crlf db 13,10,0
year              db "年",0
month           db "月",0
day              db "日",0
hour             db "时",0
minute           db "分",0
second          db "秒",0
week             db "星期",0
template       db "%-2.2d %s",0
FillZero        db "0",0

.data?
temp   db  40  dup(?)
buffer  db 200 dup(?)
time     SYSTEMTIME  <>
.code
start:
   invoke DialogBoxParam,NULL,IDD_DIALOG,NULL,addr ModalDlgProc,NULL
   invoke ExitProcess,eax
ModalDlgProc proc uses ebx hWnd:dword,uMsg:dword,wParam:dword,lParam:dword
   .if uMsg==WM_INITDIALOG
      invoke SetTimer,hWnd,1,1000,NULL
   .elseif uMsg==WM_TIMER
      invoke GetLocalTime,addr time
      mov ax,time.wYear
      movzx eax,ax
      invoke dwtoa,eax,addr temp
      invoke lstrcpy,addr buffer,addr temp
      invoke lstrcat,addr buffer,addr year
      mov ax,time.wMonth
      movzx eax,ax
      invoke dwtoa,eax,addr temp
      invoke lstrcat,addr buffer,addr temp     
      invoke lstrcat,addr buffer,addr month
      mov ax,time.wDay
      movzx eax,ax
      invoke dwtoa,eax,addr temp
      invoke lstrcat,addr buffer,addr temp     
      invoke lstrcat,addr buffer,addr day
      xor eax,eax
      mov ax,time.wDayOfWeek
      mov bl,2
      mul bl
      lea ebx,WeekNum     
      add eax,ebx    
      invoke lstrcpyn,addr temp,eax,3
      invoke lstrcat,addr buffer,addr week
      invoke lstrcat,addr buffer,addr temp
      invoke lstrcat,addr buffer,addr crlf
      mov ax,time.wHour
      movzx eax,ax
      invoke wsprintf,addr temp,addr template,eax,addr hour
      invoke lstrcat,addr buffer,addr temp
      mov ax,time.wMinute
      movzx eax,ax
      invoke wsprintf,addr temp,addr template,eax,addr minute
      invoke lstrcat,addr buffer,addr temp
      mov ax,time.wSecond
      movzx eax,ax
      invoke wsprintf,addr temp,addr template,eax,addr second
      invoke lstrcat,addr buffer,addr temp
      invoke SetDlgItemText,hWnd,IDC_TEXT,addr buffer
   .elseif uMsg==WM_CLOSE
      invoke EndDialog,hWnd,FALSE
  .else
     mov eax,FALSE
     ret
  .endif
  mov eax,TRUE
  ret
ModalDlgProc endp
end start


⌨️ 快捷键说明

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