1、 AREA
AREA 偽指令用于定義一個代碼段或數據段。
語法格式:
AREA 段名 屬性 1 ,屬性 2 ,……
其中,段名若以數字開頭,則該段名需用 “ | ” 括起來,如 |1_test| 。
屬性字段表示該代碼段(或數據段)的相關屬性,多個屬性用逗號分隔。常用的屬性如下:
— CODE 屬性:用于定義代碼段,默認為 READONLY 。
— DATA 屬性:用于定義數據段,默認為 READWRITE 。
— READONLY 屬性:指定本段為只讀,代碼段默認為 READONLY 。
— READWRITE 屬性:指定本段為可讀可寫,數據段的默認屬性為 READWRITE 。
— ALIGN 屬性:使用方式為ALIGN表達式。在默認時, ELF (可執行連接文件)的代碼段和數據段是按字對齊的,表達式的取值范圍為 0 ~ 31 ,相應的對齊方式為表達式2次方。
— COMMON 屬性:該屬性定義一個通用的段,不包含任何的用戶代碼和數據。各源文件中同名的COMMON段共享同一段存儲單元。
一個匯編語言程序至少要包含一個段,當程序太長時,也可以將程序分為多個代碼段和數據段。
使用示例:
AREA Init , CODE , READONLY
該偽指令定義了一個代碼段,段名為 Init ,屬性為只讀
2、 ALIGN
ALIGN 偽指令可通過添加填充字節的方式,使當前位置滿足一定的對其方式 。
語法格式:
ALIGN { 表達式 { ,偏移量 }}
其中,表達式的值用于指定對齊方式,可能的取值為2的冪,如 1 、 2 、 4 、 8 、 16 等。若未指定表達式,則將當前位置對齊到下一個字的位置。偏移量也為一個數字表達式,若使用該字段,則當前位置的對齊方式為: 2 的表達式次冪+偏移量。
使用示例:
AREA Init , CODE , READONLY , ALIEN = 3 ;指定后面的指令為8字節對齊。 指令序列
END
4、 ENTRY
ENTRY 偽指令用于指定匯編程序的入口點。
語法格式:
ENTRY
在一個完整的匯編程序中至少要有一個ENTRY(當有多個ENTRY時,程序的真正入口點由鏈接器指定),但在一個源文件里最多只能有一個ENTRY(可以沒有)。
使用示例:
AREA Init , CODE , READONLY
ENTRY ;指定應用程序的入口點
……
5、 END
END 偽指令用于通知編譯器已經到了源程序的結尾。
語法格式:
END
使用示例:
AREA Init , CODE , READONLY
……
END ;指定應用程序的結尾
6、 EQU
EQU 偽指令用于為程序中的常量、標號等定義一個等效的字符名稱,類似于C語言中的#define 。
語法格式:
名稱 EQU 表達式 { ,類型 }
其中 EQU 可用 “ * ” 代替。
名稱為EQU偽指令定義的字符名稱,當表達式為32位的常量時,可以指定表達式的數據類型,可以有以下三種類型:
CODE16 、 CODE32 和 DATA
7、 EXPORT(或GLOBAL)
語法格式:
EXPORT 標號 {[WEAK]}
EXPORT 偽指令用于在程序中聲明一個全局的標號,該標號可在其他的文件中引用。 EXPORT可用GLOBAL代替。標號在程序中區分大小寫, [WEAK] 選項聲明其他的同名標號優先于該標號被引用。
使用示例:
AREA Init , CODE , READONLY
EXPORT Stest ;聲明一個可全局引用的標號Stest……
END
8、 IMPORT
語法格式:
IMPORT 標號 {[WEAK]}
IMPORT 偽指令用于通知編譯器要使用的標號在其他的源文件中定義,但要在當前源文件中引用,而且無論當前源文件是否引用該標號,該標號均會被加入到當前源文件的符號表中。
標號在程序中區分大小寫, [WEAK] 選項表示當所有的源文件都沒有定義這樣一個標號時,編譯器也不給出錯誤信息,在多數情況下將該標號置為0 ,若該標號為B 或BL指令引用,則將B或BL指令置為 NOP 操作。
使用示例:
AREA Init , CODE , READONLY
IMPORT Main ;通知編譯器當前文件要引用標號Main,但Main在其他源文件中定義
……
END
9、 EXTERN
語法格式:
EXTERN 標號 {[WEAK]}
EXTERN 偽指令用于通知編譯器要使用的標號在其他的源文件中定義,但要在當前源文件中引用,如果當前源文件實際并未引用該標號,該標號就不會被加入到當前源文件的符號表中。標號在程序中區分大小寫, [WEAK] 選項表示當所有的源文件都沒有定義這樣一個標號時,編譯器也不給出錯誤信息,在多數情況下將該標號置為 0 ,若該標號為 B 或 BL 指令引用,則將 B 或 BL指令置為 NOP 操作。
使用示例:
AREA Init , CODE , READONLY
EXTERN Main ;通知編譯器當前文件要引用標號Main,但Main 在其他源文件中定義……
END
10、 GET(或INCLUDE)
語法格式:
GET 文件名
GET 偽指令用于將一個源文件包含到當前的源文件中,并將被包含的源文件在當前位置進行匯編處理。可以使用 INCLUDE 代替 GET 。
匯編程序中常用的方法是在某源文件中定義一些宏指令,用 EQU 定義常量的符號名稱,用MAP和FIELD 定義結構化的數據類型,然后用 GET 偽指令將這個源文件包含到其他的源文件中。使用方法與 C 語言中的 “ include ” 相似。
GET 偽指令只能用于包含源文件,包含目標文件需要使用 INCBIN 偽指令
使用示例:
AREA Init , CODE , READONLY
GET a1.s ;通知編譯器當前源文件包含源文件a1.s
GE T C:a2.s ;通知編譯器當前源文件包含源文件C: a2.s ……
END
11、 INCBIN
語法格式:
INCBIN 文件名
INCBIN 偽指令用于將一個目標文件或數據文件包含到當前的源文件中,被包含的文件不作任何變動的存放在當前文件中,編譯器從其后開始繼續處理。
使用示例:
AREA Init , CODE , READONLY
INCBIN a1.dat ;通知編譯器當前源文件包含文件a1.dat
INCBIN C:a2.txt ;通知編譯器當前源文件包含文件C:a2.txt……
END
12、 RN
語法格式:
名稱 RN 表達式
RN 偽指令用于給一個寄存器定義一個別名。采用這種方式可以方便程序員記憶該寄存器的功能。其中,名稱為給寄存器定義的別名,表達式為寄存器的編碼。
使用示例:
Temp RN R0 ;將R0定義一個別名Temp
13、 ROUT
語法格式:
{ 名稱 } ROUT
ROUT 偽指令用于給一個局部變量定義作用范圍。在程序中未使用該偽指令時,局部變量的作用范圍為所在的 AREA ,而使用 ROUT 后,局部變量的作為范圍為當前 ROUT 和下一個 ROUT 之間。
否則,zero=0(跳到SuspendUp處執行)
上一篇:關于ARM的21個常用概念
下一篇:ARM9學習1-Keil uVision 4.14的安裝與使用
推薦閱讀
史海拾趣
Ecera Comtek Corp公司成立于XX世紀初,由幾位熱衷于電子通信技術的工程師共同創立。初創時期,公司面臨著資金短缺、技術挑戰和市場競爭等多重壓力。然而,創始人們憑借對技術的熱情和執著,不斷研發創新產品,逐漸在行業內樹立了口碑。他們經常通宵達旦地工作,試驗新的設計方案,努力提升產品的性能和穩定性。經過數年的努力,Ecera Comtek Corp公司終于推出了首款具有競爭力的無線通信設備,為公司的發展奠定了堅實的基礎。
在競爭激烈的電子行業中,DACHANG公司始終堅持以品質為核心。公司不斷引進先進的生產設備和技術,嚴格把控產品質量,確保每一件產品都能達到客戶的期望。正是這種對品質的執著追求,讓DACHANG公司的產品在市場上贏得了良好的口碑,公司也逐漸擴大了自己的市場份額。
在競爭激烈的電子行業中,DACHANG公司始終堅持以品質為核心。公司不斷引進先進的生產設備和技術,嚴格把控產品質量,確保每一件產品都能達到客戶的期望。正是這種對品質的執著追求,讓DACHANG公司的產品在市場上贏得了良好的口碑,公司也逐漸擴大了自己的市場份額。
近年來,隨著人工智能、物聯網等新興技術的快速發展,半導體行業正面臨著前所未有的變革。Crystal Semiconductor Corp積極應對這一挑戰,加大了對新興技術的研發投入,推出了一系列適應市場需求的新產品。同時,公司還加強了與上下游企業的合作,共同推動產業鏈的發展。
- 創業初期與技術創新
CT Micro公司最初由幾位電子工程領域的專家創立,他們看到了微型計算機斷層掃描(Micro-CT)技術在電子行業中的巨大潛力。初期,公司面臨著資金短缺和技術難題,但他們通過不斷研發和創新,成功開發出了一款具有高性價比的Micro-CT設備,迅速獲得了市場的認可。
- 市場拓展與合作伙伴關系
隨著產品的成熟,CT Micro開始積極尋求市場拓展。他們與多家電子制造企業建立了合作關系,為這些企業提供Micro-CT設備的定制服務。通過與這些企業的合作,CT Micro不僅擴大了市場份額,還進一步提升了產品的技術水平和應用范圍。
- 研發升級與產品迭代
面對日益激烈的市場競爭,CT Micro不斷投入研發力量,對Micro-CT設備進行升級和迭代。他們成功推出了多款新型設備,具有更高的分辨率、更快的掃描速度和更低的輻射劑量。這些新產品的推出,進一步鞏固了CT Micro在電子行業中的領先地位。
- 國際化戰略與市場拓展
隨著國內市場的飽和,CT Micro開始實施國際化戰略。他們積極參與國際展覽和研討會,展示自己的產品和技術實力。同時,他們還在海外設立了銷售和服務中心,為國際客戶提供更加便捷的服務。通過這些努力,CT Micro成功打開了國際市場的大門。
- 社會責任與可持續發展
在快速發展的同時,CT Micro也積極履行社會責任。他們注重環保和可持續發展,采用環保材料和節能技術生產產品。此外,他們還積極參與公益事業,為貧困地區的教育和醫療事業貢獻力量。這些舉措不僅提升了公司的社會形象,也為其可持續發展奠定了堅實基礎。
請注意,這些故事框架是虛構的,并不代表CT Micro公司的實際發展情況。如果您需要了解CT Micro公司或類似公司的真實故事,建議您查閱相關公司的官方網站、新聞報道或行業分析報告。
對于4h的交流電源定時器(555,BH4024)電路,網友可能會提出一系列問題。以下是一些常見問題及其詳細回答:
1. 電路的基本工作原理是什么?
回答:該電路結合了555定時器(作為時基電路)和BH4024(7級二進制串行計數器/分頻器)來實現4小時的定時功能。555定時器用于產生定時信號,而BH4024則負責將定時信號轉換成所需的時間間隔。每當按下AN(定時觸動按鈕)時,電路開始計時,并在4小時后自動切斷交流電源。
2. 如何調整定時時間?
回答:直接調整4小時的定時時間可能不直接通過電路中的元件實現,因為定時時間主要由BH4024的分頻特性和555定時器的振蕩頻率決定。然而,可以通過改變555定時器的外部電阻和電容值來調整其振蕩頻率,但這通常會影響整個電路的定時精度和穩定性。對于精確調整至4小時,可能需要使用微控制器或其他可編程邏輯設備來替代或輔助BH4024和555定時器。
3. 電路中的555定時器具體起到什么作用?
回答:在這個電路中,555定時器作為時基電路,負責產生穩定的振蕩信號。這個振蕩信號的頻率和占空比可以通過調整與555定時器相連的電阻和電容值來改變。然而,在這個特定的應用中,555定時器的輸出信號通常被用作BH4024的輸入信號,以便控制BH4024的計數和分頻過程。
4. BH4024是如何實現定時功能的?
回答:BH4024是一個7級二進制串行計數器/分頻器,它能夠根據輸入的時鐘信號進行計數,并在達到預定次數后輸出一個翻轉信號。在這個電路中,BH4024的計數頻率由555定時器的輸出信號決定。當計數器達到某個預設值時(這個值決定了4小時的定時長度),BH4024會輸出一個信號來切斷交流電源。
5. 電路中的電源要求是什么?
回答:電路中的電源要求取決于所使用的555定時器和BH4024的具體型號以及電路中的其他元件。通常情況下,555定時器可以在較寬的電源電壓范圍內工作(如4.5V至16V),但具體值應參考器件的數據手冊。對于BH4024和其他元件,也應遵循類似的電源要求。此外,由于該電路涉及交流電源的控制,因此還需要注意電路的安全性和穩定性問題。
6. 如何確保電路的可靠性和安全性?
回答:為了確保電路的可靠性和安全性,需要采取以下措施:
- 選擇質量可靠的元件和器件,并按照正確的規格和參數進行連接。
- 在電路設計中考慮適當的保護措施,如過流保護、過壓保護等。
- 在實際使用中,注意避免電路受到外部干擾和損壞。
- 定期對電路進行檢查和維護,以確保其正常運行和延長使用壽命。
7. 電路有哪些潛在的應用場景?
回答:該電路具有廣泛的應用場景,包括但不限于:
- 家庭自動化系統中的定時開關功能。
- 工業生產線上的自動斷電和重啟功能。
- 實驗室和測試設備中的定時控制功能。
- 公共場所的自動照明和節能控制功能等。
總之,對于4h的交流電源定時器(555,BH4024)電路,網友可能會關注其工作原理、定時時間調整、元件作用、電源要求、可靠性和安全性以及潛在應用場景等方面的問題。以上回答旨在提供全面的信息和指導。
設計一個能夠識別序列“10010”的序列檢測器,設:x為數字碼流輸入,z為檢測標記輸出,且高電平表示“發現指定序列”,低電平表示“沒有發現指定序列”。要求(1)給出RTL描述;(2)編寫testbench;(3)進行邏輯綜合;(4)給出綜合后的仿真結果。 ...… 查看全部問答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 09:33 編輯 在電 路 系 統的分析中,卷積具有十分重要的意義。尤其是對于一些內部結構未知的電路系統,由于無法給出描述系統的微分方程,只有通過實驗方法獲得實 驗數據或單位沖激響應的曲線。據此沖激響應,進 ...… 查看全部問答∨ |
|
百思橋科技受邀參加2009中國視頻系統博覽會 2009年10月,“2009中國視頻系統博覽會”將在深圳會展中心隆重開展。百思橋科技作為高清行業中重要的生產廠家,應展會主辦方的邀請,將安排公司的技術骨干人員攜帶主打產品及最新研發產品,盛裝參展。 ...… 查看全部問答∨ |
我想用WinIO.sys獲取cpu的當前溫度,為什么程序老是失敗,temp_dwPortVal=0xffffffff 在頭文件中導入: #include "WinIO.h" #pragma comment(lib,"WinIo.lib") 在實現中: DWORD temp_dwPortVal=0; & ...… 查看全部問答∨ |
請大家幫忙看看這個程序,為什么P5^6不能產生500MS的波形呢? static void TimeAIni(void) { WDTCTL = WDTPW + WDTHOLD; //關閉內部看門狗。 BCSCTL1 = XT2OFF+XTS; //關閉4M(XT2)振蕩器。 BCSCTL2 = SELM0 + SELM1 + SELS ; //MCLK選 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 03:57 編輯 三個晚上沒睡個好覺了 ,現在眼睛一閉就爭不開,最想做的就是好好睡個覺,睡他個天昏地暗 … 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 報名觀看TI嵌入式主題月直播,場場精彩,好運連連
- 免費申請試用|福祿克Norma6000功率分析儀
- 【EEWORLD第二十六屆】2011年05月社區明星人物揭曉!
- 3月21日有獎直播:ADI新一代高阻抗輸入SAR ADC的優勢與應用
- 最能打的國產芯們
- Maxim 利用nanoPower創新技術,致力于降低系統的靜態功耗 看視頻答題贏好禮! 還有免費開發板等你拿
- 第三代半導體如何測試 進階技能備好了!收集能量抽好禮!
- 有獎直播報名|羅姆EcoGaN™與LSI 技術
- 瑞薩電子顛覆傳統理念的嵌入式開發平臺 Renesas Synergy™ 評估套件震撼來襲!答題即可免費申請!
- 有獎直播預報名|TI 新一代Sitara™ AM62處理器革新人機交互——加速邊緣AI的開發