|
- .版本 2
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 身份证号码, 文本型
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- .如果真 (输入框 (“请输入18位身份证号码:”, , , 身份证号码, #输入文本, ) = 假)
- 结束 ()
- .如果真结束
- 信息框 (身份证校验 (身份证号码), 0, , )
- .子程序 身份证校验, 逻辑型, 公开, 有效返回真,无效返回假
- .参数 身份证号码, 文本型, , 18位数字 最后一位可以为X
- .局部变量 号码, 字节型, , "18"
- .局部变量 计数, 整数型
- .局部变量 A, 字节型, , "17"
- .局部变量 B, 字节型, , "10"
- .局部变量 校验和, 短整数型
- A = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }
- B = { 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 }
- 校验和 = 0
- .如果真 (取文本长度 (身份证号码) ≠ 18)
- 返回 (假)
- .如果真结束
- .如果真 (到时间 (取文本中间 (身份证号码, 7, 8)) = [100年1月1日])
- 返回 (假)
- .如果真结束
- .计次循环首 (18, 计数)
- 号码 [计数] = 取身份证数字 (取代码 (身份证号码, 计数))
- .如果真 (选择 (计数 = 18, 号码 [计数] = 255, 号码 [计数] ≥ 10))
- 返回 (假)
- .如果真结束
- .如果真 (计数 ≤ 17)
- 校验和 = 校验和 + 号码 [计数] × A [计数]
- .如果真结束
- .计次循环尾 ()
- 返回 (B [1 + 校验和 % 11] = 号码 [18])
- .子程序 取身份证数字, 字节型, , 48~57返回0~9,88或120返回10,其余返回255
- .参数 字符代码, 字节型
- 置入代码 ({ 138, 69, 8, 60, 48, 114, 8, 60, 57, 119, 4, 44, 48, 235, 14, 60, 88, 116, 4, 60, 120, 117, 4, 176, 10, 235, 2, 176, 255, 15, 182, 192, 201, 194, 4, 0 })
- ' mov al,[ebp+8]
- ' .if al >= 48 && al <= 57
- ' sub al,48
- ' .elseif al == 88 || al == 120
- ' mov al,10
- ' .else
- ' mov al,255
- ' .endif
- ' movzx eax,al
- ' leave
- ' retn 4
- 返回 (0)
复制代码
|
|