爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 16974|回复: 10
收起左侧

关于灭灯的函数?

[复制链接]
发表于 2006-2-11 12:10:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
seg0D9:EB64 Set_Light_On:                           ; CODE XREF: sub_B4D880P
seg0D9:EB64                 mov     DPP0, #36h ; '6'
seg0D9:EB68                 nop
seg0D9:EB6A                 movb    rl1, byte_D8ED1
seg0D9:EB6E                 bset    r1.2
seg0D9:EB70                 movb    byte_D8ED1, rl1
seg0D9:EB74                 rets
seg0D9:EB74 ; End of function Set_Light_On
seg0D9:EB74
seg0D9:EB76
seg0D9:EB76 ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹踫Seg0D9:EB76
seg0D9:EB76
seg0D9:EB76 Set_Light_Off:                          ; CODE XREF: sub_B4D888P
seg0D9:EB76                 mov     DPP0, #36h ; '6'
seg0D9:EB7A                 nop
seg0D9:EB7C                 movb    rl1, byte_D8ED1
seg0D9:EB80                 bclr    r1.2
seg0D9:EB82                 movb    byte_D8ED1, rl1
seg0D9:EB86                 rets
seg0D9:EB86 ; End of function Set_Light_Off
seg0D9:EB86
seg0D9:EB88 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪膕Seg0D9:EB88                 mov     DPP0, #36h ; '6'
seg0D9:EB8C                 nop
seg0D9:EB8E                 movb    rl1, byte_D8ED1
seg0D9:EB92                 jnb     r1.3, loc_D9EB98
seg0D9:EB96                 jmpr    cc_UC, loc_D9EB9C
seg0D9:EB98 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪膕Seg0D9:EB98
seg0D9:EB98 loc_D9EB98:                             ; CODE XREF: seg0D9:EB92j
seg0D9:EB98                 mov     r4, #1
seg0D9:EB9A                 jmpr    cc_UC, loc_D9EB9E
seg0D9:EB9C ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪膕Seg0D9:EB9C
seg0D9:EB9C loc_D9EB9C:                             ; CODE XREF: seg0D9:EB96j
seg0D9:EB9C                 mov     r4, #0
seg0D9:EB9E
seg0D9:EB9E loc_D9EB9E:                             ; CODE XREF: seg0D9:EB9Aj
seg0D9:EB9E                 rets


关于这个SET_LIGHT_OFF,单独调用为什么不起作用呢,byte_D8ED1。2是亮灭灯的标志位吗。
发表于 2006-2-11 12:37:00 | 显示全部楼层
调用地址正确吗?
正确的话这个函数也可能只是将背景灯开状态变为关状态。
回复 支持 反对

使用道具 举报

发表于 2006-2-11 13:12:12 | 显示全部楼层
可以用at将D8ED1的数据改一下,看灯是否有相应变化
如无变化则需要另外的函数来关灯
回复 支持 反对

使用道具 举报

发表于 2006-2-11 13:14:47 | 显示全部楼层
我的理解是关开灯只需要对这个标志位修改,在lcd display函数里有判断并执行
回复 支持 反对

使用道具 举报

发表于 2006-2-11 13:29:16 | 显示全部楼层
原帖由 JunFeng 于 2006-2-11 13:12 发表
可以用at将D8ED1的数据改一下,看灯是否有相应变化
如无变化则需要另外的函数来关灯

试过了,可使得背景灯处于关状态。

[ 本帖最后由 fukandahai 于 2006-2-11 13:32 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-11 14:02:17 | 显示全部楼层

谢谢!我又知道了一种新的工具at,让我试试

谢谢!我又知道了一种新的工具at,让我试试
回复 支持 反对

使用道具 举报

发表于 2006-2-11 15:01:52 | 显示全部楼层
在wise2006正式版已实现了:
长按侧键-,立即关灯!

楼主可以研究一下.
回复 支持 反对

使用道具 举报

发表于 2006-2-11 15:06:34 | 显示全部楼层

回复 #6 bausrpgf 的帖子

呵呵
我收集了些小工具
在这里,flash修改基本都用的到

patchtools.ys168.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-12 12:07:38 | 显示全部楼层
好的,过了这几天弄,这几天一直再值班
回复 支持 反对

使用道具 举报

发表于 2006-2-12 14:27:56 | 显示全部楼层
还有一点非常有用
实时调试:
可以在ida中感兴趣的地方中断,加入一个dump 积存器或是ram或是栈数据的call。
刷入手机,运行一下,也许可以找到需要的东西。。。
回复 支持 反对

使用道具 举报

发表于 2006-2-12 14:32:40 | 显示全部楼层
看狼大的例程
$Segmented
$Mod167
Patch_Address    EQU 1F8000h ;Free Space in Flash (CHANGE THIS)
Patch Section Code Word At Patch_address ; Start Patch at Patch_Address
    main proc far  ; start main of patch
;TODO,恢复跳转指令覆盖的语句
mov  [-r0],r12
mov  [-r0],r13
mov  [-r0],r14
mov  [-r0],r15
mov  r4,#8              ;调用栈深度
cmp  r12, #4E3h         ;以下为判断察看条件,比如调用字符4E3的时候,需自行修改   
jmp  CC_NZ, ProcEnd     
mov  r15, r4
mov  r14, #1000h        ;调用栈的输出开始地址,我一般会用0C:1000
PopProc:
pop  r12
pop  r13
extp #0Ch, #1
mov  [r14],r12          ;存储调用栈的Offset
add  r14,#2
extp #0Ch, #1
mov  [r14],r13          ;存储调用栈的Seg
add  r14,#2
mov  [-r0],r12          ;将系统栈的内容压入用户栈保存
mov  [-r0],r13
sub  r15,#1
jmp  CC_NZ,PopProc      ;判断深度
mov  r15,r4             ;恢复系统栈
PushProc:
mov  r13,[r0+]
mov  r12,[r0+]
push r13
push r12
sub  r15,#1
jmp  CC_NZ,PushProc
ProcEnd:
mov  r15,[r0+]
mov  r14,[r0+]
mov  r13,[r0+]
mov  r12,[r0+]
rets
    main endp
Patch   EndS
END
这个例程可以把一定深度的调用栈显示在c:1000的位置,然后用AT指令可以看到函数的调用点的下一个位置,因为调用函数是会把下一条指令的位置压入系统栈。

还有我常用的dump 积存器

org        0BF36C0h


        extp        #37h, #4
        mov        3FB0h, r1
        mov        3FB2h, r2
        mov        3FB4h, r3
        mov        3FB6h, r4

        extp        #37h, #4
        mov        3FB8h, r5
        mov        3FBAh, r6
        mov        3FBCh, r7
        mov        3FBEh, r8
        mov        3FC0h, r9
        extp        #37h, #4
        mov        3FC2h, r10
        mov        3FC4h, r11
        mov        3FC6h, r12
        mov        3FC8H, r13
        extp        #37h, #2
        mov        3FCAh, r14
        mov        3FCCh, r15
一定记得的是要补原指令
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-3 09:47

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表