keil软件运行报错,error 65: access violation……

treeglow 2010-03-20 04:36:12
新学keil,程序是很简单的:
ORG 0000H
CLR C
MOV A, R4
ADD A, R6 ;R4+R6
MOV 22H, A
MOV A, R3
ADDC A, R5
MOV 21H, A
CLR A
ADDC A, #0
MOV 20H, A
END
编译没问题,但运行有错:“*** error 65: access violation at C:0x000E : no 'execute/read' permission”
我看0x000E是程序执行完后的一行,它上面一行是:“C:0x000C F520 MOV 0x20,A”
什么道理啊?我在网上搜来搜去还是搞不清楚。谢谢告诉我吧。
...全文
1374 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
treeglow 2010-03-21
  • 打赏
  • 举报
回复
谢谢各位,结帖了。
用户 昵称 2010-03-20
  • 打赏
  • 举报
回复
单版机一般没有操作系统,所以程序是一直执行的,一般进入main就是个死循环,在循环里调用不同的函数做事,没电了就不运行了,有电一般一直运行下去。
空影 2010-03-20
  • 打赏
  • 举报
回复
end只是代表终止汇编,而单片机程序rom中接下来的缺省单元数据可能会被执行吧
treeglow 2010-03-20
  • 打赏
  • 举报
回复
也谢谢jennyvenus,是不是end只是表示程序到此不再编译,而单片机在end以后会继续执行下去,于是有问题了?
treeglow 2010-03-20
  • 打赏
  • 举报
回复
谢谢两位,出现这个情况是正常的?为什么程序必须进入无限循环?运行到END不就表示结束了吗?书还来不及看,一下子找不到这个内容。
用户 昵称 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 treeglow 的回复:]
谢谢schlafenhamster!
可是程序为什么会非法退出呢?难道以后我每次编程序都要在end前加个死循环?别人都这么做吗?
[/Quote]
是的,大家都这么做,只不过在循环中做事。
Great_Bug 2010-03-20
  • 打赏
  • 举报
回复
如果是某种产品中用的程序,在RESET后程序必须进入一个无限循环.

如果只是要测试某程序段,那后面的就可以不管了.
kyzf 2010-03-20
  • 打赏
  • 举报
回复
楼主可以下载这个看看:

Keil C51中文使用手册
http://download.csdn.net/source/2134310
treeglow 2010-03-20
  • 打赏
  • 举报
回复
谢谢schlafenhamster!
可是程序为什么会非法退出呢?难道以后我每次编程序都要在end前加个死循环?别人都这么做吗?
schlafenhamster 2010-03-20
  • 打赏
  • 举报
回复
这是程序非法退出,所以不要让程序退出,在end前加一个死循环。jmp $;

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧