- 积分
- 380
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2006-4-2 16:27:10
|
显示全部楼层
$Segmented
$Mod167
;0x3637FA:DAB304DF DABF0013
Min EQU 25DCH ;0D,
Hour EQU 25DEH
DrawWString EQU 0xD1102E
DrawImageByIndex EQU 0xB3DF04
Botton EQU 3E2BH;34,这是按键,用于检测是否处于待机状态
Flag EQU 3F2CH ;标志为1,则计时开始
Hour1 EQU 3F16H ;本次学习的小时
Min1 EQU 3F18H ;本次学习的分钟
Hour2 EQU 0D44H ;总学习小时
Min2 EQU 0D46H ;总学习分钟
SHour EQU 3F1EH ;开始时间
SMin EQU 3F20H
oldhour EQU 0D40H;36
oldmin EQU 0D42H
temp equ 0xd5d834
PlayToneWhenOpen EQU 0xB5D2A4
Patch_address EQU 0xBF1300
Patch Section Code Word At Patch_address ; Start Patch at Patch_Address
;-------------------------------------------------------------------------------;
main proc far ; start main of patch
MOV [-R0],R3
MOV [-R0],R4
MOV [-R0],R12
;加入检测功能8(计时写保护),如果打开,则直接跳到最后
extp #0EH,#1;功能8可选
mov r15,3A42H
jb r15.7,flag3
extp #0EH,#1;功能2可选
mov r15,3A42H
jnb r15.1,exit
mov R12,#2 ;时间正确,且没Beep过,开始Beep.R12为响铃参数 1C.2C.3C
calls seg(PlayToneWhenOpen),sof(PlayToneWhenOpen)
extp #34H,#04H ;先做1-Flag
mov r12,#01H
sub r12,Flag
mov Flag,r12 ;将1-Flag的结果存入Flag
mov r12,Flag ;比较Flag
jmpr cc_z,flag0
;1状态
extp #0Dh, #2 ;写入开始时间
mov r3, Hour ; 小时
mov r4, Min ; 分钟
extp #34H,#2
mov Shour,r3
mov Smin,r4
jmpr cc_uc,flag3
flag0: ;0状态
;extp #34H,#4 ;汇总时间=总时间+当前时间
;mov r3,Hour1
;mov r4,Min1
;add hour2,r3
;add min2,r4
mov r3,#0
extp #34H,#4 ;清除开始时间和本次时间
mov Shour,r3
mov Smin,r3
mov Hour1,r3
mov Min1,r3
;extp #36h,#2 ;存hour2,min2到oldhour
;mov r3,hour2
;mov r4,min2
;extp #36h,#2
;mov oldhour,r3
;mov oldmin,r4
jmpr cc_uc,flag3
exit:
mov r12,#0
extp #36H,#2 ;清除累计时间和累计时间
mov oldhour,r12
mov oldmin,r12
extp #36H,#2
mov hour2,r12
mov min2,r12
mov R12,#1 ;时间正确,且没Beep过,开始Beep.R12为响铃参数 1C.2C.3C
calls seg(PlayToneWhenOpen),sof(PlayToneWhenOpen)
calls seg(temp),sof(temp)
flag3:
MOV R12,[R0+]
MOV R4,[R0+]
MOV R3,[R0+]
rets
main endp
Patch EndS
END |
|