搜索
bottom↓
回复: 8

请教关于KEIL MDK 如何跳转到指定地址处的代码的问题?

[复制链接]

出0入42汤圆

发表于 2015-1-27 09:48:32 | 显示全部楼层 |阅读模式
      现在在跟一个NMI fault ,已经定位了它出错附近的代码地址为 0x200027F1 ,以前用IAR的时候,在汇编窗口有个输入窗口,只要把这个地址输入的那个窗口然后回车就会跳转到对应的的汇编代码处,
然后根据汇编代码对应的C代码来查找出错的原因。现在用keil MDK 了它的汇编窗口好像没有那个能输入地址的窗口。请问大家是如何定位的?怎样找到地址0x200027F1对应的汇编代码。

本帖子中包含更多资源

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

x

出0入42汤圆

 楼主| 发表于 2015-1-27 09:54:07 | 显示全部楼层
自己顶一下,莫非需要玩儿命的滚轮?!

出0入0汤圆

发表于 2015-1-27 11:03:06 | 显示全部楼层
改PC指针寄存器的值?不知道行不行。

出0入0汤圆

发表于 2015-1-27 11:16:41 | 显示全部楼层
本帖最后由 aozima 于 2015-1-27 11:18 编辑

command那里输入  pc = XXX

不过 NMI fault 的原因是确定的吧,用不到跳到对应位置去跟综
只有hardfault时一般才回溯指令。

出0入0汤圆

发表于 2015-1-27 12:07:34 来自手机 | 显示全部楼层
我们可以利用keil软件的绝对地址跳转,((void(code *)(void))0x00)(); keil软件编译时会转换成jmp 0x00,就跳到指定的绝对地址了;

出0入0汤圆

发表于 2015-1-27 12:07:56 来自手机 | 显示全部楼层
亲测有效

出0入42汤圆

 楼主| 发表于 2015-1-27 12:39:58 | 显示全部楼层


我想跳转到0x200027F1 是不是就用((void(code *)(void))0x200027F1)();

出0入0汤圆

发表于 2015-1-27 15:56:51 | 显示全部楼层
汇编窗口右击

本帖子中包含更多资源

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

x

出0入42汤圆

 楼主| 发表于 2015-1-27 17:00:00 | 显示全部楼层

此楼正解!!!我已经试过了,OK!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 17:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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