爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1828|回复: 35
收起左侧

按时段执行功能应用(附汇编指令代码)

[复制链接]
发表于 2008-7-1 20:15:36 | 显示全部楼层 |阅读模式

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

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

x
;作用:指定时间段启动功能
;这段补丁和llhn做的按时段亮灯补丁的作用一样,代码已经精简到不能再精简,可以让一些功能按时段启动,...按时段启用答录机...按时段防火墙...
;还可以用其他系统时间如:分 日 年 周等的时段为条件,大家可以试试

;系统时间 RAM地址
;0D:25DC 分
;0D:25DE 时
;0D:25E0 日
;0D:25E2 月
;0D:25E4 年
;0D:25E6 周

;下面是以锁键关屏为例子:

;原来是把关屏函数DAC7C0DC直接挂在自动锁键入口上
;0x35E8E6:DAA36E77 DAC7C0DC;自动锁时关屏

;修改后的按时段关屏:把DAC7C0DC放在下面根据设定的时段执行功能:每天晚上22:00点后执行锁键关屏,早上7.00后,锁键不关屏
0x35E8E6: DAA36E77 DABF6006
0x1F0660: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD16009D03 ;16 hex=22:00点
0x1F0670: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD07009D02DAC7C0DC98D0DB00FFFF ;07 hex=07:00点


;:重要记事是固定某个时间执行一个可单独使用的函数,这个补丁可以让原来某个补丁中包含的函数(或者一些参数之类也可以)在指定时段内变成调用另一个..



;---------------------------------------------------------------------------------------------------------------------------------------------------------
;用SFE反汇编看看,只用了一个寄存器和系统时间

1F0660: 88 D0               :         mov        [-r0], r13                               r13进栈  保护寄存器
1F0662: D7 40 0D 00   :         extp        #0Dh, #1                              extp指令 临时切换到系统的小时页
1F0666: F2 FD DE 25   :         mov        r13, 365DEh                       ; (000D:25DE) r13取得0D*4000+25DE的系统小时参数
1F066A: 46 FD 16 00    :         cmp        r13, #16h                              cmp比较指令 比对r13和#16h的大小
1F066E: 9D 03               :         jmpr        cc_NC, loc_1F0676           if r13>=16 then jump to 1F0676
1F0670: 46 FD 07 00    :         cmp        r13, #7                                  比对r13和#7h的大小
1F0674: 9D 02               :         jmpr        cc_NC, loc_1F067A           if r13>=7 then jump to 1F067A
1F0676: DA C7 C0 DC : loc_1F0676:                             
1F0676: DA C7 C0 DC :         calls        0C7h, loc_C7DCC0            calls C7DCC0 执行关屏
1F067A: 98 D0               : loc_1F067A:                             
1F067A: 98 D0               :         mov        r13, [r0+]                               恢复r13的内容 还原寄存器
1F067C: DB 00              :         rets                                                        rets执行返回


蓝色字体,就是告诉你前面有个跳的地方,是跳到这里

下面是非常常见的指令
mov
extp
cmp
jmpr

评分

参与人数 1实力分 +2 金钱数 +100 技术分 +5 贡献分 +10 收起 理由
qqqingren + 2 + 100 + 5 + 10 感谢 感谢

查看全部评分

 楼主| 发表于 2008-7-1 20:24:33 | 显示全部楼层
抄来的东西,贴在这里:

C166指令代码

00 : ADD   
01 : ADDB   字节加
02 : ADD   
03 : ADDB   字节加
04 : ADD   
05 : ADDB   字节加
06 : ADD   
07 : ADDB   字节加
08 : ADD   
09 : ADDB   字节加
0A : BFLDL
0B : MUL    带符号乘
0C : ROL
0D : JMPR
0E : BCLR
0F : BSET
10 : ADDC
11 : ADDCB   字节加带进位
12 : ADDC    加带进位
13 : ADDCB   字节加带进位
14 : ADDC    加带进位
15 : ADDCB   字节加带进位
16 : ADDC    加带进位
17 : ADDCB   字节加带进位
18 : ADDC    加带进位
19 : ADDCB   字节加带进位
1A : BFLDH
1B : MULU
1C : ROL
1D : JMPR
1E : BCLR
1F : BSET
20 : SUB     
21 : SUBB    字节减
22 : SUB     
23 : SUBB    字节减
24 : SUB     
25 : SUBB    字节减
26 : SUB     
27 : SUBB    字节减
28 : SUB     
29 : SUBB    字节减
2A : BCMP
2B : PRIOR
2C : ROR
2D : JMPR
2E : BCLR
2F : BSET
30 : SUBC   减带进位
31 : SUBCB  字节减带进位
32 : SUBC   减带进位
33 : SUBCB  字节减带进位
34 : SUBC   减带进位
35 : SUBCB  字节减带进位
36 : SUBC   减带进位
37 : SUBCB  字节减带进位
38 : SUBC   减带进位
39 : SUBCB  字节减带进位
3A : BMOVN
3B : -
3C : ROR
3D : JMPR
3E : BCLR
3F : BSET
40 : CMP    比较
41 : CMPB
42 : CMP    比较
43 : CMPB
44 : -
45 : -
46 : CMP    比较
47 : CMPB
48 : CMP
49 : CMPB
4A : BMOV
4B : DIV
4C : SHL
4D : JMPR
4E : BCLR
4F : BSET
50 : XOR
51 : XORB
52 : XOR
53 : XORB
54 : XOR
55 : XORB
56 : XOR
57 : XORB
58 : XOR
59 : XORB
5A : BOR
5B : DIVU
5C : SHL
5D : JMPR
5E : BCLR
5F : BSET
60 : AND
61 : ANDB
62 : AND
63 : ANDB
64 : AND
65 : ANDB
66 : AND
67 : ANDB
68 : AND
69 : ANDB
6A : BAND
6B : DIVL
6C : SHR
6D : JMPR        跳相对地址
6E : BCLR
6F : BSET
70 : OR
71 : ORB
72 : OR
73 : ORB
74 : OR
75 : ORB
76 : OR
77 : ORB
78 : OR
79 : ORB
7A : BXOR
7B : DIVLU
7C : SHR
7D : JMPR      跳相对地址
7E : BCLR
7F : BSET
80 : CMPI1
81 : NEG
82 : CMPI1
83 : -
84 : MOV
85 : -
86 : CMPI1
87 : IDLE
88 : MOV
89 : MOVB
8A : JB
8B : -
8C : -
8D : JMPR        跳相对地址
8E : BCLR
8F : BSET
90 : CMPI2
91 : CPL
92 : CMPI2
93 : -
94 : MOV
95 : -
96 : CMPI2
97 : PWRDN
98 : MOV
99 : MOVB
9A : JNB
9B : TRAP
9C : JMPI
9D : JMPR          跳相对地址
9E : BCLR
9F : BSET
A0 : CMPD1
A1 : NEGB
A2 : CMPD1
A3 : -
A4 : MOVB
A5 : DISWDT
A6 : CMPD1
A7 : SRVWDT
A8 : MOV
A9 : MOVB
AA : JBC
AB : CALLI
AC : ASHR
AD : JMPR      跳相对地址
AE : BCLR
AF : BSET
B0 : CMPD2
B1 : CPLB
B2 : CMPD2
B3 : -
B4 : MOVB
B5 : EINIT
B6 : CMPD2
B7 : SRST
B8 : MOV
B9 : MOVB
BA : JNBS     跳段地址
BB : CALLR
BC : ASHR
BD : JMPR      跳相对地址
BE : BCLR
BF : BSET
C0 : MOVBZ    同时置零
C1 : -
C2 : MOVBZ    同时置零
C3 : -
C4 : MOV
C5 : MOVBZ    同时置零
C6 : SCXT
C7 : -
C8 : MOV
C9 : MOVB
CA : CALLA   绝对地址调用
CB : RET    返回调用
CC : NOP     无操作
CD : JMPR    跳相对地址
CE : BCLR
CF : BSET
D0 : MOVBS      取字节值
D1 : AT/EXTR
D2 : MOVBS      取字节值
D3 : -
D4 : MOV
D5 : MOVBS      取字节值
D6 : SCXT
D7 : EXTP/S/R
D8 : MOV         取值
D9 : MOVB
DA : CALLS       段地址调用
DB : RETS        返回调用
DC : EXTP/S/R    开始扩展页/开始扩展段/开始扩展寄存器
DD : JMPR        跳相对地址
DE : BCLR
DF : BSET
E0 : MOV         取值
E1 : MOVB        字节取值
E2 : PCALL
E3 : -
E4 : MOVB        字节取值
E5 : -
E6 : MOV       取值
E7 : MOVB
E8 : MOV        取值
E9 : MOVB     字节取值
EA : JMPA     跳绝对地址
EB : RETP
EC : PUSH
ED : JMPR      跳相对地址
EE : BCLR
EF : BSET
F0 : MOV        取值
F1 : MOVB
F2 : MOV       取值
F3 : MOVB
F4 : MOVB
F5 : -
F6 : MOV        取值
F7 : MOVB
F8 : -
F9 : -
FA : JMPS      跳段地址
FB : RETI
FC : POP
FD : JMPR        跳相对地址
FE : BCLR
FF : BSET


****************************************************************************************
C166处理器汇编指令


ADD         
ADDB        字节加
ADDC        加带进位
ADDCB        字节加带进位
SUB        
SUBB        字节减
SUBC        减带进位
SUBCB        字节减带进位
MUL        带符号乘
MULU        无符号乘
DIV        带符号除
DIVL        带符号长除
DIVLU        无符号长除
DIVU        无符号除
CPL        置入正号
CPLB        字节置入正号
NEG        置负
NEGB        字节置负
AND        
ANDB        字节与
OR        
ORB        字节或
XOR        与非
XORB        字节与非
BCLR        内存清零
BSET        内存置数
BMOV        内存导入
BMOVN        内存负导入
BAND        内存与
BOR        内存或
BXOR        内存与非
BCMP        内存比较
BFLDH        
BFLDL
CMP        比较
CMPB        字节比较
CMPD1
CMPD2
CMPL1
CMPL2
PRIOR        测定循环次数
SHL        左移
SHR        右移
ROL        反转左边字节
ROR        反转右边字节
ASHR
MOV        取值
MOVB        字节取值
MOVBS        取字节值
MOVBZ        同时置零
JMPA        跳绝对地址
JMPI        回跳
JMPR        跳相对地址
JMPS        跳段地址
JB        有值相对跳
JBC        跳后内存值清零
JNB        无值相对跳
JNBS        无值相对跳并入值
CALLA        绝对地址调用
CALLI        回调
CALLR        相对地址调用
CALLS        段地址调用
PCALL        调用并压栈
TRAP        调用交互值
POP        出栈
PUSH        压栈
SCXT        压栈并置入新值
RET        返回调用
RETS        返回调用
RETP        返回调用并出栈
RETI        返回最上层
SRST        重置系统
IDLE        进入空闲状态
PWRDN        进入最小活动
SRVWDT        监视时钟
DISWDT        取消监视时钟
EINIT        完成标志
ATOMIC        原子次序
EXTR        开始扩展寄存器
EXTP        开始扩展页
EXTPR        开始扩展页及寄存器
EXTS        开始扩展段
EXTSR        开始扩展段及寄存器
NOP        无操作

条件判断
cc_UC        无条件
cc_Z        
cc_NZ        非零
cc_V        溢出
cc_NV        非溢出
cc_N        
cc_NN        非负
cc_C        进位
cc_NC        非进位
cc_EQ        相等
cc_NE        不等
cc_ULT        无符号小于
cc_ULE        无符号小于等于
cc_UGE        无符号大于等于
cc_UGT        无符号大于
cc_SLE        小于等于
cc_SGE        大于等于
cc_SGT        大于
cc_NET        不等并且不是最后
回复 支持 反对

使用道具 举报

发表于 2008-7-1 20:32:15 | 显示全部楼层
学习,慢慢看,希望有一天可以开发自己的补丁
回复 支持 反对

使用道具 举报

发表于 2008-7-1 22:28:41 | 显示全部楼层
慢慢看下,虽然看不懂哈哈,谢谢mm了
回复 支持 反对

使用道具 举报

发表于 2008-7-1 23:49:50 | 显示全部楼层
慢慢看下,虽然看不懂哈哈,谢谢mm了
回复 支持 反对

使用道具 举报

发表于 2008-7-2 08:38:10 | 显示全部楼层
这么好的东西!
回复 支持 反对

使用道具 举报

发表于 2008-7-2 09:28:36 | 显示全部楼层
;:重要记事是固定某个时间执行一个可单独使用的函数,这个补丁可以让原来某个补丁中包含的函数(或者一些参数之类也可以)在指定时段内变成调用另一个..

有些难以理解!不过使用定时任务确实难以实现“每天晚上22:00点后执行锁键关屏,早上7.00后,锁键不关屏”这样的功能,所以从这个例子就可以理解该补丁与定时任务之间的区别。
回复 支持 反对

使用道具 举报

发表于 2008-7-2 09:47:19 | 显示全部楼层
应用前景很广啊
回复 支持 反对

使用道具 举报

发表于 2008-7-2 09:56:29 | 显示全部楼层
还是会点c好,呵呵,那样可以用mmc上的配置文件来编辑时间和程序
当然云mm这个要强烈支持的
不是一点点的强*
回复 支持 反对

使用道具 举报

发表于 2008-7-2 10:55:27 | 显示全部楼层
有创意 支持 支持
回复 支持 反对

使用道具 举报

发表于 2008-7-2 20:04:40 | 显示全部楼层
谢谢分享!!!!!
回复 支持 反对

使用道具 举报

发表于 2008-7-2 21:22:23 | 显示全部楼层
顶了,由于非常钦佩楼主,不得不说声好!
回复 支持 反对

使用道具 举报

发表于 2008-7-2 21:30:02 | 显示全部楼层

回复 9# JunFeng 的帖子

这是怎么回事,可以详解吗?用C语言也可以吗?
回复 支持 反对

使用道具 举报

发表于 2008-7-2 21:43:05 | 显示全部楼层

回复 7# taitaile 的帖子

有些函数是开关函数,运行一次开,再运行一次关。所以这样的函数是可以通过重要记事实现的。
用云版主的方法更有扩展性。
回复 支持 反对

使用道具 举报

发表于 2008-7-2 21:44:13 | 显示全部楼层
感谢云版主对代码进行注释,可以学到不少知识
回复 支持 反对

使用道具 举报

发表于 2008-7-3 16:06:32 | 显示全部楼层
汇编。。。看不懂哇。。。::?\dk
回复 支持 反对

使用道具 举报

发表于 2008-8-28 19:58:18 | 显示全部楼层
刚看到还有这样的东西!
有没有能读取秒的?

[ 本帖最后由 mygod999 于 2008-8-28 20:36 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2008-10-9 14:57:44 | 显示全部楼层
今天想把来电闪灯搞成象背景灯自控一样按时段自动控制的,这样只让它晚上闪灯,看着比较炫;白天不闪灯,省电,这个补丁应该可以用上。
回复 支持 反对

使用道具 举报

发表于 2008-10-9 20:03:05 | 显示全部楼层
纯技术帖!

鉴定完毕。
回复 支持 反对

使用道具 举报

发表于 2008-10-9 20:59:35 | 显示全部楼层
请教云MM:这个补丁如何加到来电闪灯的补丁中,使之控制时间段闪灯,自己直接用跳转不行,来电就关机。以下补丁部分请云MM看看:

0X1F6200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403600F2F4740D9AF410C0DAB3A862 ;0x1F620B处为应用程序功能位置,默认为功能2
0X1F6210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FC8000E00DE6FE2262E6FFBF00FAD6
0X1F6220: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D41CDAB34463E6FC50000D02E6FC0001 ;0002为两次闪灯的间隔时间,0050->5000;0100为亮灯的时间,0100->0001
0X1F6230: FFFFFFFF FAD6CA1C
0X361CC6:E6FC2003  FABF800A  
;
;;应用程序菜单字串修改-"来电闪灯",默认菜单项为2
;0x45002C: B31FFEB07D9532000000 DC65FE9935FEDA6A0000
;以下是1楼的补丁,我改了地址。

0x1F0a80: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 88D0D7400D00F2FDDE2546FD14009D03 ;16 hex=22:00点
0x1F0a90: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 46FD08009D02FABF006298D0DB00FFFF ;07 hex=07:00点

[ 本帖最后由 XJWSYXY 于 2008-10-10 00:01 编辑 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 03:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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