找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1777|回复: 5
打印 上一主题 下一主题
收起左侧

用keill 4编译汇编语句如果添加STARTUP.A51文件就出错 有没有单片机高手帮我解答

[复制链接]
跳转到指定楼层
楼主
ID:284007 发表于 2018-4-23 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用keill 4编译汇编语句为什么会出现下面的情况

ORG 0030H
MOV 30H,#11H
MOV 31H,#22H
MOV A,30H
ADD A,31H
MOV R1,A
END
问题在于这时候如果是添加了STARTUP.A51文件,那么程序运行就在里面一直死循环出不来,如果没有加入STARTUP.A51这个文件那么程序会在闪存里出不来

还有一个有趣的现象就是添加了SYARTUP.A51这个文件
改变ORG的值会发生不一样的情况
当ORG大于0005H时同上
当小于0005H 但大于0000H时程序不进入STARUTP.A51而是直接进入闪存
当等于0000H时,程序会执行但不执行END而执行完编写的程序后会直接进入STATURP.A51

  我一直没想明白
  所以求各位同道中人为在下解惑
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2018-4-23 12:13 | 只看该作者
程序开始,必须从0000H单元取指令运行,你对0000H单元没有写开序。所以运行是随机取指的,程序将得不到保证!
回复

使用道具 举报

板凳
ID:284007 发表于 2018-4-23 13:56 来自手机 | 只看该作者
yzwzfyz 发表于 2018-4-23 12:13
程序开始,必须从0000H单元取指令运行,你对0000H单元没有写开序。所以运行是随机取指的,程序将得不到保证 ...

ORG 0030H不是已经规定了程序的开始是从0030H开始的嘛
回复

使用道具 举报

地板
ID:284007 发表于 2018-4-23 14:07 来自手机 | 只看该作者
yzwzfyz 发表于 2018-4-23 12:13
程序开始,必须从0000H单元取指令运行,你对0000H单元没有写开序。所以运行是随机取指的,程序将得不到保证 ...

另外ORG一开始就指示ip值一开始在0030h
回复

使用道具 举报

5#
ID:123289 发表于 2018-4-23 15:38 | 只看该作者
楼主:
51单片机必须从0000H开始运行,这是铁律!不是你ORG能定义的。
你的ORG只能定义你的“某个程序‘从某个单元开始放置。本例,你是从0030H开始放置了这段程序。但你改变不了单片机的硬件行为:从0000H开始取指!!!
你想一下:如是程序中有10个ORG,如果依你的说法,不就混套了吗。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:123289 发表于 2018-4-23 15:39 | 只看该作者
必须弄清楚这一点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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