標題: 用keill 4編譯匯編語句如果添加STARTUP.A51文件就出錯 有沒有單片機高手幫我解答 [打印本頁]

作者: july0    時間: 2018-4-23 11:09
標題: 用keill 4編譯匯編語句如果添加STARTUP.A51文件就出錯 有沒有單片機高手幫我解答
我用keill 4編譯匯編語句為什么會出現下面的情況

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

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

  我一直沒想明白
  所以求各位同道中人為在下解惑

作者: yzwzfyz    時間: 2018-4-23 12:13
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序將得不到保證!
作者: july0    時間: 2018-4-23 13:56
yzwzfyz 發(fā)表于 2018-4-23 12:13
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序將得不到保證 ...

ORG 0030H不是已經規(guī)定了程序的開始是從0030H開始的嘛
作者: july0    時間: 2018-4-23 14:07
yzwzfyz 發(fā)表于 2018-4-23 12:13
程序開始,必須從0000H單元取指令運行,你對0000H單元沒有寫開序。所以運行是隨機取指的,程序將得不到保證 ...

另外ORG一開始就指示ip值一開始在0030h
作者: yzwzfyz    時間: 2018-4-23 15:38
樓主:
51單片機必須從0000H開始運行,這是鐵律!不是你ORG能定義的。
你的ORG只能定義你的“某個程序‘從某個單元開始放置。本例,你是從0030H開始放置了這段程序。但你改變不了單片機的硬件行為:從0000H開始取指�。�!
你想一下:如是程序中有10個ORG,如果依你的說法,不就混套了嗎。
作者: yzwzfyz    時間: 2018-4-23 15:39
必須弄清楚這一點。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1