爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1659|回复: 14
收起左侧

[求助] 怎么用汇编实现在ram里查找数据?

[复制链接]
发表于 2006-3-5 00:00:59 | 显示全部楼层 |阅读模式

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

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

x
想在RAM某一特定的数据区域查找某个数值并匹配

汇编应该怎么实现


双字例子

161A04:3200 3200 2100 0000

从161A04开始查找0000,并返回00前那个数的地址和值

例子中数值是2100 地址为161A08
应该怎么实现

付上自己写的这个程序
返回的不是数值老是出错
机子死机 开机后发现是运行到 2e就crash了

610022: E6 F2 0A 1A :   mov     r2, #1A04h
610026: D7 40 58 00 : loc_610026:
610026: D7 40 58 00 :   extp    #58h, #1
61002A: D4 12 02 00 :   mov     r1, [r2+#2]
61002E: 48 10       :   cmp    r1, #0
610030: 2D 03       :   jmpr    cc_Z, loc_610038
610032: 08 21       :   add     r2, #1
610034: F0 C1       :   mov     r12, r1
610036: 0D F7       :   jmpr    cc_UC, loc_610026

单字节也试过

31323500
查找00

movb rl4 [r2+1]
movbz r14 r14
cmp r14 #1

也是死机

[ 本帖最后由 fef 于 2006-3-15 22:51 编辑 ]
发表于 2006-3-6 14:11:37 | 显示全部楼层
介个.....8懂呀。帮顶啦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-6 22:04:15 | 显示全部楼层
每人回答
郁闷啊
多谢四点半
回复 支持 反对

使用道具 举报

发表于 2006-3-7 22:43:35 | 显示全部楼层
二个工具:ATCGSNDebug         开机找
               SEDebugger             可开机、关机找,MC60没办法用。6688可行,觉得这个安逸
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-9 23:31:29 | 显示全部楼层
nj528  你误会了呵呵

我是说我的那段程序在手机里运行出错

程序的功能是在ram查找数据

61002E: 48 01       :   cmp     r0, #1

出错位置在这里
回复 支持 反对

使用道具 举报

发表于 2006-3-10 09:29:30 | 显示全部楼层
你要找的是单字节, 但却用了双字节寄存器啊, 试试movb,compb函数.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-10 11:18:22 | 显示全部楼层
多谢  wwssff  兄

单字节我也试过


程序不出错但是感觉直接跳过这个不运行

wwssff帮我看看这样写有什么地方错


movb rl4 [r8]
movbz  r14 rl4 --?零转化 高位补0转双字节
cmp r14 #0

[ 本帖最后由 fef 于 2006-3-10 11:23 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2006-3-10 14:45:14 | 显示全部楼层
这儿估计没问题, 前后再拿出来看看.
回复 支持 反对

使用道具 举报

发表于 2006-3-11 11:06:11 | 显示全部楼层
610022: E6 F2 0A 1A :   mov     r2, #1A04h
610026: D7 40 58 00 : loc_610026:
610026: D7 40 58 00 :   extp    #58h, #1
61002A: D4 12 02 00 :   mov     r1, [r2+#1]
61002E: 48 01       :   cmp    r1, #1
610030: 2D 03       :   jmpr    cc_Z, loc_610038
610032: 08 21       :   add     r2, #1
610034: F0 C1       :   mov     r12, r1
610036: 0D F7       :   jmpr    cc_UC, loc_610026
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-15 22:53:21 | 显示全部楼层
原帖由 wwssff 于 2006-3-11 11:06 发表
610022: E6 F2 0A 1A :   mov     r2, #1A04h
610026: D7 40 58 00 : loc_610026:
610026: D7 40 58 00 :   extp    #58h, #1
61002A: D4 12 02 00 :   mov     r1,
61002E: 48 01       :   cmp     r1, #1 ...


多谢 wwssff 这个是我笔误

原来是R1 #0

待会找找原程序
给你看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-15 23:00:10 | 显示全部楼层
611200: 88 10       :   mov     [-r0], r1
611202: 88 C0       :   mov     [-r0], r12
611204: 88 D0       :   mov     [-r0], r13
611206: 88 E0       :   mov     [-r0], r14
611208: E6 F1 00 00 :   mov     r1, #0
61120C: E6 FC 12 00 :   mov     r12, #12h
611210: E6 FD 12 00 :   mov     r13, #12h
611214: D7 40 05 00 : loc_611214:
611214: D7 40 05 00 :   extp    #5, #1
611218: D4 E1 60 33 :   mov     r14, [r1+#3360h]
61121C: 46 FE 00 00 :   cmp     r14, #0
611220: 3D 05       :   jmpr    cc_NZ, loc_61122C
611222: 98 E0       :   mov     r14, [r0+]
611224: 98 D0       :   mov     r13, [r0+]
611226: 98 C0       :   mov     r12, [r0+]
611228: 98 10       :   mov     r1, [r0+]
61122A: DB 00       :   rets
;------------------------------------------------------------
61122C: 06 FC 12 00 : loc_61122C:
61122C: 06 FC 12 00 :   add     r12, #12h
611230: 06 FD 12 00 :   add     r13, #12h
611234: 06 F1 01 00 :   add     r1, #1
611238: 06 FE BE 01 :   add     r14, #1BEh
61123C: DA 91 44 C0 :   calls   91h, loc_91C044
611240: 0D E9       :   jmpr    cc_UC, loc_611214
;------------------------------------------------------------


出错是91cd00
本来怀疑是
611238: 06 FE BE 01 :   add     r14, #1BEh
61123C: DA 91 44 C0 :   calls   91h, loc_91C044


DA 91 44 C0 是 画图函数
传入参数三个
R12 X
R13y 坐标
R14 图标id

怀疑是传入的R14出的问题,改了改程序发现还是出错

[ 本帖最后由 fef 于 2006-3-16 00:42 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-16 00:36:58 | 显示全部楼层
611200: 88 10       :   mov     [-r0], r1
611202: 88 C0       :   mov     [-r0], r12
611204: 88 D0       :   mov     [-r0], r13
611206: 88 E0       :   mov     [-r0], r14
611208: E6 F1 00 00 :   mov     r1, #0
61120C: E6 FC 12 00 :   mov     r12, #12h
611210: E6 FD 12 00 :   mov     r13, #12h
611214: D7 40 05 00 : loc_611214:
611214: D7 40 05 00 :   extp    #5, #1
611218: D4 E1 60 33 :   mov     r14, [r1+#3360h]
61121C: 46 FE 00 00 :   cmp     r14, #0
611220: 3D 05       :   jmpr    cc_NZ, loc_61122C
611222: 98 E0       :   mov     r14, [r0+]
611224: 98 D0       :   mov     r13, [r0+]
611226: 98 C0       :   mov     r12, [r0+]
611228: 98 10       :   mov     r1, [r0+]
61122A: DB 00       :   rets
;------------------------------------------------------------
61122C: 06 FC 12 00 : loc_61122C:
61122C: 06 FC 12 00 :   add     r12, #12h
611230: 06 FD 12 00 :   add     r13, #12h
611234: 06 F1 01 00 :   add     r1, #1
611238: 06 FE BE 01 :   add     r14, #1BEh
61123C: D7 40 05 00 :   extp    #5, #1
611240: C4 E1 80 33 :   mov     [r1+#3380h], r14
611244: 0D E7       :   jmpr    cc_UC, loc_611214


改成这样,当机提示 611244: 0D E7  出错
;------------------------------------------------------------
回复 支持 反对

使用道具 举报

发表于 2006-3-16 08:48:42 | 显示全部楼层
你用什么来发现出错地方的?
回复 支持 反对

使用道具 举报

发表于 2006-3-16 09:18:57 | 显示全部楼层
原帖由 fef 于 2006-3-15 23:00 发表
611200: 88 10       :   mov     , r1
611202: 88 C0       :   mov     , r12
611204: 88 D0       :   mov     , r13
611206: 88 E0       :   mov     , r14
611208: E6 F1 00 00 :   mov     r1, #0
61 ...

611238: 06 FE BE 01 :   add     r14, #1BEh
这儿可能会让图号加出范围, 另外坐标为零比较好, 不然大尺寸的图显示可能有问题.
回复 支持 反对

使用道具 举报

发表于 2007-8-23 05:45:35 | 显示全部楼层
实现读取固定位置数据的函数了吗?能不能分享一下。

另外你是怎么调试的?



关于写二进制文件到文件管理器的问题

怎样写这个函数呢? 6618最多能存多大的文件?其他图片铃声都删掉

[ 本帖最后由 ttyy6 于 2007-8-23 06:11 编辑 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 11:22

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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