- 积分
- 813
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
SOLO,这可能会对你有帮助
$Segmented
$Mod167
;;2128
;;memory function
;memcpy EQU 0xEE4EFE
;;Address for Patch Data
;Flash_Address EQU 0800000h
;Patch_Address EQU 0780080h ;Free Space in Flash (CHANGE THIS)
;SRC_Address EQU 046A08Ah
;Date_Address EQU 023FDAh
;;6688
;;memory function
;memcpy EQU 0xC783DC
;;Address for Patch Data
;Flash_Address EQU 0A00000h
;Patch_Address EQU 01F1C90h ;Free Space in Flash (CHANGE THIS)
;SRC_Address EQU 0338FD6h
;Date_Address EQU 0365DCh
;;x618
;;memory function
;memcpy EQU 0xFF0F66
;;Address for Patch Data
;Flash_Address EQU 0800000h
;Patch_Address EQU 07D1550h ;Free Space in Flash (CHANGE THIS)
;SRC_Address EQU 06EE9BCh
;Date_Address EQU 0102F8Ch
;;S57c
;;memory function
;memcpy EQU 0xBF82D0
;;Address for Patch Data
;Flash_Address EQU 0400000h
;Patch_Address EQU 03C0000h ;Free Space in Flash (CHANGE THIS)
;SRC_Address EQU 03B4B06h
;Date_Address EQU 033686h
;M55cV11
;memory function
memcpy EQU 0xBFA90A
;Address for Patch Data
Flash_Address EQU 0200000h
Patch_Address EQU 0551520h ;Free Space in Flash (CHANGE THIS)
SRC_Address EQU 0x0CFB74
Date_Address EQU 0365C8h ;存放时间数据的地址依次是分时日月年星期
;需要注意的是WORD存储,星期是从星期日开始0-6
Patch Section Code Word At Patch_address ; Start Patch at Patch_Address
main proc far ; start main of patch
mov r14, #pof(szall+Flash_Address)
mov r15, #pag(szall+Flash_Address)
calls seg(memcpy),sof(memcpy)
extp r9,#2
mov r13,[r8+#02]
mov r12,[r8]
mov r6,#0030h
extp r13,#1
mov r8,[r12]
add r12,#2
Loops:
cmp r8,#0
jmpr cc_Z, ProcEnd
extp r13,#1
mov r9,[R12]
cmp r9,#0025h
jmpr cc_Z,NoWeek
cmp r9,#0024h
jmpr cc_Z,Week
jmpr cc_UC,NoMatch
NoWeek:
extp r13,#1
mov r9,[R12+#2]
cmp r9,#0048h ;H
jmpr cc_Z, IsHour
cmp r9,#0046h ;F
jmpr cc_z, IsFen
cmp r9,#004Dh ;M
jmpr cc_Z, IsMonth
cmp R9,#0044h ;D
jmpr cc_Z, IsDay
jmpr cc_UC, NoMatch
IsHour:
extp #pag(Date_Address),#1
mov r4, pof(Date_Address)+2h
callr WordToDigChar
extp r13,#2
mov [r12],r4
mov [R12+#2],r5
jmpr cc_UC,Match
IsFen:
extp #pag(Date_Address),#1
mov r4, pof(Date_Address)
callr WordToDigChar
extp r13,#2
mov [r12],r4
mov [R12+#2],r5
jmpr cc_UC,Match
IsMonth:
extp #pag(Date_Address),#1
mov r4, pof(Date_Address)+6h
callr WordToDigChar
extp r13,#2
mov [r12],r4
mov [R12+#2],r5
jmpr cc_UC,Match
IsDay:
extp #pag(Date_Address),#1
mov r4, pof(Date_Address)+4h
callr WordToDigChar
extp r13,#2
mov [r12],r4
mov [R12+#2],r5
jmpr cc_UC,Match
Week:
extp #pag(Date_Address),#1
mov r4, pof(Date_Address)+0Ah
shl r4,#1
extp #pag(szweek+Flash_Address),#1
mov r4,[r4+#pof(szweek+Flash_Address)]
extp r13,#1
mov [r12],r4
jmpr cc_UC,NoMatch
Match:
add r12,#2
sub r8,#1
NoMatch:
add r12,#2
sub r8,#1
jmpr cc_UC, Loops
ProcEnd:
rets
main endp
WordToDigChar proc near
mov r5,#0Ah
mov MDL,r4
divu r5
mov r4,MDL
mov r5,MDH
add r4,r6
add r5,r6
ret
WordToDigChar endp
szall:
db 0ah,00
db 25h,00,4Dh,00h,08h,67h,25h,00h,44h,00h,0e5h,65h,20h,00h,1Fh,66h
db 1Fh,67h,24h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
szweek:
db 0E5h,65h,00,4Eh,8Ch,4Eh,09h,4Eh,0DBh,56h,94h,4Eh,6Dh,51h
Patch EndS
SRCPatch Section Code Word At SRC_Address
Change Proc far
extp r9,#2
mov r13,[r8+#02]
mov r12,[r8]
mov r14,#20h
mov [-r0],r14
calls seg(Patch+Flash_Address),sof(Patch+Flash_Address)
add r0,#2
Change endp
SRCPatch Ends
END
|
|