- 积分
- 140
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
因为这个代码做的不是很规范,也没有太大的研究价值,但是ZK4321等朋友关于显示位置、可选的问题,
我没有太多时间来做,所以发个源码,大家看一下!
$Segmented
$Mod167
;0x363B64: DAB304DF DABF8087
Vmax EQU 3A44H ;0e,
;Flag EQU 3E48H;测试
DrawImageByIndex EQU 0xB3DF04
;PlaySMSTone EQU 0xB5D3FC
PatchBegin EQU 0x1F8780 ;从0xBF8780开始
patch section code word AT PatchBegin
TheBetter proc far
MOV [-R0],R1
MOV [-R0],R2
MOV [-R0],R3
MOV [-R0],R12
MOV [-R0],R13
MOV [-R0],R14
;extp #34H,#1H
;mov Flag,r8
;cmp r8,#0B408H
;jmpr cc_ule,Bai;如果不是在充电,用百分号
;calls seg(DrawImageByIndex),sof(DrawImageByIndex);
;jmpr cc_uc,Exit
;Bai:
mov r14,#22EH
mov r13, #0h ;纵坐标
mov r12,#4BH
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
mov r12,#0E10H ;r12为空电,r13为満电
mov r13,#1068H
mov r14,r13 ;r14=r13-r12为电容量
sub r14,r12
extp #0eH,#1H ;取Vmax到r13
mov r13,Vmax
cmp r13,r12 ;比较r13(Vmax)和r12(空电)
jmpr cc_uge,nozero;r13>=r12 差为正
mov r13,#0H;差为负
jmpr cc_uc,go
nozero:
sub r13,r12 ;r13-r12=还有多少电
go:
mov mdl,r14 ;用电容量/100
mov r12,#64H
divu r12
mov r12,mdl ;r12现为1百分数的数目
mov mdl,r13 ;r13(还有电量)/r12(1百分数多少格)
divu r12
mov r12,mdl ;最后得到百分数r12
mov mdl,r12
mov r13,#64H
divu r13
mov r1,mdl ;r1为除100的商
jmpr cc_z,goon
;为100以上时
mov r14,#1
add r14, #20Dh
mov r13, #0h ;纵坐标
mov r12,#4BH
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
mov r12,#51H
mov r13, #0h
mov r14,#20DH
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
mov r12,#57H
mov r13, #0h
mov r14,#20DH
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
jmpr cc_uc,Exit
goon:
mov mdl,mdh
mov r13,#0AH
divu r13
mov r2,mdl;r2为除10的商
mov r3,mdh;r3为除1的商
MOV [-R0],R3
mov r14,r2
add r14, #20Dh
mov r13, #0h ;纵坐标
mov r12,#51H
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
MOV R3,[R0+]
mov r12,#57H
mov r14,r3
add r14, #20Dh
mov r13, #0h ;纵坐标
calls seg(DrawImageByIndex),sof(DrawImageByIndex);
Exit:
MOV R14,[R0+]
MOV R13,[R0+]
MOV R12,[R0+]
MOV R3,[R0+]
MOV R2,[R0+]
MOV R1,[R0+]
rets
TheBetter endp
patch ends
End
|
|