- 积分
- 207
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
那篇【教程】补丁基础教程(全文完)写的确实很棒,但是有个问题
你得文章提到:移植到2128的的6618“来电亮灯V2”
我把补丁拷贝到ultraedit里,然后保存成bin文件
用idag和ADIS16X反汇编得到得结果怎么和你不一样啊
我弄了半天还是一头雾水,不知道哪里错了
请赐教多谢多谢
附:
1:我得反汇编结果
00000 : 38 38 SUBC R3,[R0]
00002 : 34 30 38 38 SUBC 3838H,30H
00006 : 35 30 45 36 SUBCB 3645H,30H
0000A : 46 38 31 31 CMP 38H,#3131H
0000E : 30 30 SUBC R3,R0
00010 : 45 36 Invalid Opcode
00012 : 46 39 30 39 CMP 39H,#3930H
00016 : 30 30 SUBC R3,R0
00018 : 44 37 Invalid Opcode
0001A : 34 30 34 30 SUBC 3034H,30H
0001E : 30 30 SUBC R3,R0
00020 : 46 32 46 43 CMP 32H,#4346H
00024 : 38 45 SUBC R4,#5
00026 : 32 46 34 30 SUBC CC6,3034H
0002A : 39 38 SUBCB RH1,[R0]
0002C : 32 44 30 46 SUBC CC4,4630H
00030 : 45 44 Invalid Opcode
00032 : 30 34 SUBC R3,R4
00034 : 46 30 44 39 CMP 30H,#3944H
00038 : 46 30 39 38 CMP 30H,#3839H
0003C : 46 30 38 44 CMP 30H,#4438H
00040 : 45 30 Invalid Opcode
00042 : 31 44 SUBCB RL2,RL2
00044 : 34 30 43 38 SUBC 3843H,30H
00048 : 39 44 SUBCB RL2,#4
0004A : 30 31 SUBC R3,R1
0004C : 37 38 44 32 SUBCB 38H,#3244H
00050 : 34 30 43 39 SUBC 3943H,30H
00054 : 38 44 SUBC R4,#4
00056 : 30 31 SUBC R3,R1
00058 : 37 38 44 34 SUBCB 38H,#3444H
0005C : 34 38 44 30 SUBC 3044H,38H
00060 : 32 44 30 32 SUBC CC4,3230H
00064 : 34 38 44 31 SUBC 3144H,38H
00068 : 32 44 30 32 SUBC CC4,3230H
0006C : 44 41 Invalid Opcode
0006E : 43 36 31 32 CMPB 36H,3231H
00072 : 35 42 39 38 SUBCB 3839H,CC2
00076 : 35 30 39 38 SUBCB 3839H,30H
0007A : 34 30 46 30 SUBC 3046H,30H
0007E : 38 34 SUBC R3,#4
00080 : 46 30 39 35 CMP 30H,#3539H
00084 : 44 42 Invalid Opcode
00086 : 30 30 SUBC R3,R0
00088 : 00 00 ADD R0,R0
0008A : 00 00 ADD R0,R0
2,下面是你得原文
7D1C00: FFFFFFFFFFFF 88408850E6F8
7D1C06: FF 11 ;开始使用的时间(16进制,默认为17点)
7D1C07: FFFFFF 00E6F9
7D1C0A: FF 09 ;停止使用的时间(16进制,默认为9点)
7D1C0B: FFFFFFFFFF 00D7404000
7D1C10: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F2FC8E2F40982D0FED04F0D9F098F08D
7D1C20: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E01D40C89D0178D240C98D0178D448D0
7D1C30: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 2D0248D12D02DAC6125B98509840F084
7D1C40: FFFFFFFF F095DB00
上面这段补丁每一行的新数据反汇编的结果如下,我在反汇编这一段的时候没有使用机器的地址,而是从00000开始的,大家注意里面的跳转。
00000 : 88 40 MOV [-R0],R4 ;R4进栈,保护寄存器
00002 : 88 50 MOV [-R0],R5 ;R5进栈
00004 : E6 F8 11 00 MOV R8,#0011H ;R8赋值 开始于晚17点
00008 : E6 F9 09 00 MOV R9,#0009H ;R9赋值 结束于早9点
0000C : D7 40 40 00 EXTP #40H,#1 ; 取40*4000+2F8E处的系统参数,得到系统时间的小时数
00010 : F2 FC 8E 2F MOV R12,2F8EH ;
00014 : 40 98 CMP R9,R8 ; 比较R9-R8的值是大于0还是为0,
00016 : 2D 0F JMPR CC_Z,0036H ; 如果为0,则说明R8和R9初始值相等则24小时有效,直接跳到暂时亮灯函数,即:000036
00018 : ED 04 JMPR CC_UGT,0022H ; 如果R9>R8则跳到00022
0001A : F0 D9 MOV R13,R9 ; 结束时间赋给R13
0001C : F0 98 MOV R9,R8 ; 开始时间R8的值赋给R9
0001E : F0 8D MOV R8,R13 ; 结束时间转赋给R8,现在R8是结束时间9,而R9为开始时间17 |
|