全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2729
推到 Plurk!
推到 Facebook!

關於虛指令ORG的用法

答題得分者是:Kevin_Yu
JasonK
一般會員


發表:1
回覆:1
積分:0
註冊:2007-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-24 13:39:46 IP:61.230.xxx.xxx 訂閱
請各大大高手小弟是8051的新手,關於虛指令ORG的用法有一點不懂,
例如一般我所常見的Sample Code如下:
ORG 00H
JMP START
ORG 30H

START:
MOV SP,#60H
MOV P1,#0FFH
.
.
.
.

程式開始執行時會從ORG 00H開始,然後JMP to START,
我想請問一下,什麼時候會執行ORG 30H這行,而ORG 30H
不是為了避開一些暫存器與中斷向量位置,若沒有執行到此指令,
不是會影響一些暫存器的值嗎??
關於此問題是否可請各位大大們幫小弟解惑 謝 謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-24 13:58:29 IP:122.124.xxx.xxx 未訂閱
ORG 00H
JMP START
ORG 30H

START: <-- 因為ORG 30H那一行的關係,所以這裡的PC值就是30H,是compiler時就決定的
MOV SP,#60H
MOV P1,#0FFH

編輯記錄
taishyang 重新編輯於 2007-07-24 14:02:30, 註解 無‧
JasonK
一般會員


發表:1
回覆:1
積分:0
註冊:2007-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-24 22:28:40 IP:218.168.xxx.xxx 訂閱
Taishyang 大大:
請問一下,這跟程式燒錄進Program Memory 位置有關嗎?
在燒錄進Program Memory 是否需要避開03H至2BH,指定從30H開始,
還是這些動作是有其他機制會替我們完成,不然為什麼PC值30H,
對應到的程式會是MOV SP,#60H這一行,而00H對應到的是JMP START,
抱歉小弟是新手,比較不瞭解,還請大大幫忙解惑 謝 謝
===================引 用 taishyang 文 章===================
ORG 00H????
??? JMP??? START
ORG 30H

START:??<--?因為ORG 30H那一行的關係,所以這裡的PC值就是30H,是compiler時就決定的
??? MOV??? SP,#60H
??? MOV??? P1,#0FFH?

taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-25 09:42:23 IP:122.124.xxx.xxx 未訂閱
跟你MCU的規劃有關
你MCU的03H ~ 2BH應該是給中斷向量用的

觀察機械碼可以幫助你了解



===================引 用 JasonK 文 章===================
Taishyang 大大:
請問一下,這跟程式燒錄進Program Memory 位置有關嗎?
在燒錄進Program Memory 是否需要避開03H至2BH,指定從30H開始,
還是這些動作是有其他機制會替我們完成,不然為什麼PC值30H,
對應到的程式會是MOV SP,#60H這一行,而00H對應到的是JMP START,
抱歉小弟是新手,比較不瞭解,還請大大幫忙解惑 謝 謝

編輯記錄
taishyang 重新編輯於 2007-07-25 09:52:00, 註解 無‧
Kevin_Yu
一般會員


發表:2
回覆:6
積分:6
註冊:2007-07-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-27 10:06:03 IP:220.130.xxx.xxx 訂閱
ORG 00H
MCU Reset後,執行的第一行
JMP START 跳到主程式開頭(也不一定要寫START)
ORG 00H~XXH是給中斷向量使用,請閱讀你使用IC的DATASHEET
若你主程式想跳過某些區域
就要用ORG把那些記憶區塊跳開,這樣WRITER就不會將程式燒進去這些區塊
例如
ORG 90H
START:
MOV A,090H
ORG 0F0H
MOV A,0DAH
以上 在燒錄時091H~0EFH間會沒有CODE存在

===================引 用 JasonK 文 章===================
Taishyang 大大:
???????? 請問一下,這跟程式燒錄進Program Memory 位置有關嗎?
???????? 在燒錄進Program Memory 是否需要避開03H至2BH,指定從30H開始,
??????? ?還是這些動作是有其他機制會替我們完成,不然為什麼PC值30H,
???????? 對應到的程式會是MOV SP,#60H這一行,而00H對應到的是JMP START,
???????? 抱歉小弟是新手,比較不瞭解,還請大大幫忙解惑??????? 謝? 謝??????? ?
===================引 用 taishyang 文 章===================
ORG 00H????
??? JMP??? START
ORG 30H

START:??<--?因為ORG 30H那一行的關係,所以這裡的PC值就是30H,是compiler時就決定的
??? MOV??? SP,#60H
??? MOV??? P1,#0FFH?

系統時間:2024-05-12 13:04:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!