找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2184|回復: 5
打印 上一主題 下一主題
收起左側(cè)

用keill 4編譯匯編語句如果添加STARTUP.A51文件就出錯 有沒有單片機高手幫我解答

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284007 發(fā)表于 2018-4-23 11:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我用keill 4編譯匯編語句為什么會出現(xiàn)下面的情況

ORG 0030H
MOV 30H,#11H
MOV 31H,#22H
MOV A,30H
ADD A,31H
MOV R1,A
END
問題在于這時候如果是添加了STARTUP.A51文件,那么程序運行就在里面一直死循環(huán)出不來,如果沒有加入STARTUP.A51這個文件那么程序會在閃存里出不來

還有一個有趣的現(xiàn)象就是添加了SYARTUP.A51這個文件
改變ORG的值會發(fā)生不一樣的情況
當ORG大于0005H時同上
當小于0005H 但大于0000H時程序不進入STARUTP.A51而是直接進入閃存
當?shù)扔?000H時,程序會執(zhí)行但不執(zhí)行END而執(zhí)行完編寫的程序后會直接進入STATURP.A51

  我一直沒想明白
  所以求各位同道中人為在下解惑
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2018-4-23 12:13 | 只看該作者
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序?qū)⒌貌坏奖WC!
回復

使用道具 舉報

板凳
ID:284007 發(fā)表于 2018-4-23 13:56 來自手機 | 只看該作者
yzwzfyz 發(fā)表于 2018-4-23 12:13
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序?qū)⒌貌坏奖WC ...

ORG 0030H不是已經(jīng)規(guī)定了程序的開始是從0030H開始的嘛
回復

使用道具 舉報

地板
ID:284007 發(fā)表于 2018-4-23 14:07 來自手機 | 只看該作者
yzwzfyz 發(fā)表于 2018-4-23 12:13
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序?qū)⒌貌坏奖WC ...

另外ORG一開始就指示ip值一開始在0030h
回復

使用道具 舉報

5#
ID:123289 發(fā)表于 2018-4-23 15:38 | 只看該作者
樓主:
51單片機必須從0000H開始運行,這是鐵律!不是你ORG能定義的。
你的ORG只能定義你的“某個程序‘從某個單元開始放置。本例,你是從0030H開始放置了這段程序。但你改變不了單片機的硬件行為:從0000H開始取指。。
你想一下:如是程序中有10個ORG,如果依你的說法,不就混套了嗎。

評分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:123289 發(fā)表于 2018-4-23 15:39 | 只看該作者
必須弄清楚這一點。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表