📄 lunar.inc
字号:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 申明:
; 1. 本开发包为共享软件,你可以免费传播、使用本软件,但不得用于商业目的。
; 2. 传播时请不要改动版权信息,并注明出处。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Author: 罗云彬
; Web: http://asm.yeah.net (罗云彬的编程乐园)
; E-mail: bigluo@telekbird.com.cn
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Version 1.0
; Date: 2000.09.15
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 阳历/农历转换计算开发包
;
; 文件包括:
; Lunar.inc -- Win32Asm 语言的 include 文件,定义了使用的数据结构
; 如果使用 C 或其他语言请自行修改格式
; Lunar.dll -- 动态连接库文件
; Lunar.lib -- Lunar.dll 对应的导入库文件
;
; 开发包包括一个 Win32Asm 的使用例子在 Example 目录中
;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 功能:计算 1901 - 2050 的农历、节气数据
; 使用:
; 1. 定义 LUNARDATA 数据结构
; 2. 填写 LUNARDATA 数据结构的输入字段并调用 _GetLunarData
; 3. 输出结果在 LUNARDATA 数据结构的输出字段中
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 库文件中可以使用的有 3 个函数
;
; 1. 取农历数据 _GetLunarData(_lpstLunarData)
; 输入:LUNARDATA 结构地址,输入阳历数据填写在结构中
; 输出:如果成功 eax = 0,返回数据在 LUNARDATA 结构中
; 如果输入输入超过范围或不合法,返回 eax <> 0
;
; 2. 取对应阳历年月的天数 _GetMonthDays(dwYear,dwMonth)
; 输入:年份,月份
; 输出:eax = 天数
;
; 3. 检测对应年份是否闰年 _IsLeapYear(dwYear)
; 输入:年份
; 输出:eax = 1 是闰年,否则 eax = 0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_GetLunarData proto :DWORD
_GetMonthDays proto :DWORD,:DWORD
_GetWeekDay proto :DWORD,:DWORD,:DWORD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据结构
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;********************************************************************
; LUNARDATA 定义输入参数和输出结果
;********************************************************************
LUNARDATA struct
;********************************************************************
; 下面由调用者填写,为输入参数
;********************************************************************
dwYear dd ? ;输入参数 - 年,十进制,例如 2000
dwMonth dd ? ;输入参数 - 月,十进制,例如 10
dwDay dd ? ;输入参数 - 日,十进制,例如 1
;********************************************************************
; 下面由子程序返回,为输出参数
;********************************************************************
dwLunarYear dd ? ;农历年,如 2000
dwLunarMonth dd ? ;农历月,如 12
dwLunarDay dd ? ;农历日,如 31
dwWeekDay dd ? ;星期,星期日=0,星期一=1 ...
dwIsLeapMonth dd ? ;是否是闰月,返回 1 为农历闰月
szLunarYear db 6 dup (?) ;天干年字符串,如“辛亥”
szLunarYearA db 4 dup (?) ;天干年字符串,如“鼠”
szLunarMonth db 10 dup (?) ;农历月字符串,如“闰十二月”
szLunarDay db 6 dup (?) ;农历日字符串,如“初十”
szLunarHolDay db 6 dup (?) ;农历节气字符串,如“大暑”
szWeekDay db 8 dup (?) ;星期字符串,如“星期一”
LUNARDATA ends
;********************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -