日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Register Usage寄存器應(yīng)用匯編程序可以在改變當(dāng)前寄存器組中所有寄存器和ACC,B,DPTR以及PSW中的內(nèi)容。當(dāng)在匯編程序中調(diào)用C函數(shù)時(shí),要注意這些寄存器都有可能被C函數(shù)改變。Overlaying Segments段覆蓋如果程序在連接

Register Usage寄存器應(yīng)用

匯編程序可以在改變當(dāng)前寄存器組中所有寄存器和ACC,B,DPTR以及PSW中的內(nèi)容。當(dāng)在匯編程序中調(diào)用C函數(shù)時(shí),要注意這些寄存器都有可能被C函數(shù)改變。

Overlaying Segments段覆蓋

如果程序在連接和定位過程中執(zhí)行了覆蓋過程,那么每個(gè)匯編子程序都有一個(gè)獨(dú)一無二的程序段是非常重要的。這對(duì)于在段覆蓋過程中,根據(jù)各個(gè)不同的段的計(jì)算函數(shù)之間的偏移是很必要的。當(dāng)出情以下情況時(shí),匯編子程序的數(shù)據(jù)區(qū)可以包括在覆蓋分析之中:

(1)所有的段名都用Cx51命名規(guī)則命名。

(2)每個(gè)使用局部變量的匯編函數(shù)都指定一個(gè)數(shù)據(jù)段。這個(gè)數(shù)據(jù)段可能被其他函數(shù)在傳遞數(shù)時(shí)訪問。參數(shù)必須依次序存放。

Example Routines例程

以下例程顯示了如何匯編程序中傳遞參數(shù)。

int function (

int v_a, /* passed in R6 & R7 */

char v_b, /* passed in R5 */

bit v_c, /* passed in fixed memory location */

long v_d, /* passed in fixed memory location */

bit v_e); /* passed in fixed memory location */

Small Model Example小存儲(chǔ)器模式例程

在小存儲(chǔ)器模式下,存放參數(shù)的固定存儲(chǔ)區(qū)域在內(nèi)部存儲(chǔ)器中。變量參數(shù)傳遞段位于data區(qū)。以下是兩個(gè)匯編代碼的例子,第一個(gè)顯示了在匯編程序中如何調(diào)用例程,第二個(gè)顯示了例程序程的匯編代碼:

在匯編程中調(diào)用函數(shù)

.

.

.

EXTRN CODE (_function) ; Ext declarations for function names

EXTRN DATA (?_function?BYTE) ; Seg for local variables

EXTRN BIT (?_function?BIT) ; Seg for local bit variables

.

.

.

MOV R6,#HIGH intval ; int a

MOV R7,#LOW intval ; int a

MOV R7,#charconst ; char b

SETB ?_function?BIT+0 ; bit c

MOV ?_function?BYTE+3,longval+0 ; long d

MOV ?_function?BYTE+4,longval+1 ; long d

MOV ?_function?BYTE+5,longval+2 ; long d

MOV ?_function?BYTE+6,longval+3 ; long d

MOV C,bitvalue

MOV ?_function?BIT+1,C ; bit e

LCALL _function

MOV intresult+0,R6 ; store int

MOV intresult+1,R7 ; retval

.

.

.

函數(shù)的匯編實(shí)現(xiàn)

NAME MODULE ; Names of the program module

?PR?FUNCTION?MODULE SEGMENT CODE ; Seg for prg code in 'function'

?DT?FUNCTION?MODULE SEGMENT DATA OVERLAYABLE

; Seg for local vars in 'function'

?BI?FUNCTION?MODULE SEGMENT BIT OVERLAYABLE

; Seg for local bit vars in 'function'

PUBLIC _function, ?_function?BYTE, ?_function?BIT

; Public symbols for 'C' function call

RSEG ?PD?FUNCTION?MODULE ; Segment for local variables

?_function?BYTE: ; Start of parameter passing segment

v_a: DS 2 ; int variable: v_a

v_b: DS 1 ; char variable: v_b

v_d: DS 4 ; long variable: v_d

.

. ; Additional local variables

.

RSEG ?BI?FUNCTION?MODULE ; Segment for local bit variables

?_function?BIT: ; Start of parameter passing segment

v_c: DBIT 1 ; bit variable: v_c

v_e: DBIT 1 ; bit variable: v_e

.

. ; Additional local bit variables

.

RSEG ?PR?FUNCTION?MODULE ; Program segment

_function: MOV v_a,R6 ; A function prolog and epilog is

MOV v_a+1,R7 ; not necessary. All variables can

MOV v_b,R5 ; immediately be accessed.

.

.

.

MOV R6,#HIGH retval ; Return value

MOV R7,#LOW retval ; int constant

RET ; Return

Compact Model Example 壓縮存儲(chǔ)器模式例程

在小存儲(chǔ)器模式下,傳遞參數(shù)的固定存儲(chǔ)器位于外部數(shù)據(jù)存儲(chǔ)器。變量參數(shù)傳遞段位于pdata

例子(略)

Large Model Example大存儲(chǔ)器模式例程

在小存儲(chǔ)器模式下,傳遞參數(shù)的固定存儲(chǔ)器位于外部數(shù)據(jù)存儲(chǔ)器。變量參數(shù)傳遞段位于xdata

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在C語(yǔ)言編程中,結(jié)構(gòu)體內(nèi)存對(duì)齊是一個(gè)容易被忽視卻影響深遠(yuǎn)的關(guān)鍵問題。它不僅關(guān)乎程序性能,更直接影響到內(nèi)存占用效率,尤其在嵌入式系統(tǒng)等資源受限環(huán)境中顯得尤為重要。本文將深入探討結(jié)構(gòu)體內(nèi)存對(duì)齊的原理,并分享手動(dòng)調(diào)整與編譯器優(yōu)...

關(guān)鍵字: C語(yǔ)言 內(nèi)存對(duì)齊 編譯器

編譯器不僅是連接硬件與軟件的橋梁,還直接影響MCU的性能優(yōu)化與功能安全。面對(duì)汽車行業(yè)對(duì)高可靠性、低功耗和高算力的需求,編譯器需在確保ASIL-D等嚴(yán)格標(biāo)準(zhǔn)的同時(shí),最大化發(fā)揮RISC-V芯片的潛力。

關(guān)鍵字: 車規(guī)MCU RISC-V 編譯器 HighTec

控制寄存器(Control Register)是中央處理器(CPU)中用于管理系統(tǒng)級(jí)操作的特殊寄存器,它為操作系統(tǒng)和硬件提供對(duì)處理器行為的精細(xì)控制。本文從計(jì)算機(jī)體系結(jié)構(gòu)角度系統(tǒng)闡述控制寄存器的設(shè)計(jì)原理、功能分類、操作機(jī)制...

關(guān)鍵字: 寄存器 處理器

國(guó)內(nèi)電子信息產(chǎn)業(yè)內(nèi)的廠商正在全球嵌入式系統(tǒng)的發(fā)展浪潮中扮演著越來越重要的角色,但隨之而來的是國(guó)內(nèi)嵌入式系統(tǒng)和相關(guān)芯片企業(yè)在出海時(shí)也面臨越來越多的合規(guī)要求,尤其是在保障用戶、設(shè)備和周邊人與物安全的功能安全領(lǐng)域內(nèi)的合規(guī)要求。...

關(guān)鍵字: 嵌入式系統(tǒng) 智能網(wǎng)聯(lián) 編譯器

在嵌入式系統(tǒng)開發(fā)中,硬件抽象層(Hardware Abstraction Layer,HAL)起著至關(guān)重要的作用。它為上層軟件提供了統(tǒng)一的硬件訪問接口,隱藏了底層硬件的細(xì)節(jié),使得軟件具有更好的可移植性和可維護(hù)性。C++作...

關(guān)鍵字: 嵌入式C++ HAL 寄存器 封裝

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動(dòng),MAX7219包含一個(gè)自動(dòng)掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

電源管理集成電路(PMIC)有益于簡(jiǎn)化最終應(yīng)用并縮小其尺寸,也因此備受青睞。然而,當(dāng)默認(rèn)啟動(dòng)時(shí)序和輸出電壓與應(yīng)用要求不符時(shí),就需要定制上電設(shè)置。大多數(shù)情況下,電路沒有可以存儲(chǔ)這些設(shè)置的非易失性存儲(chǔ)器(NVM)。對(duì)此,低功...

關(guān)鍵字: 電源管理 集成電路 寄存器

我從Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中創(chuàng)建了一個(gè)項(xiàng)目來讓它工作,你可以在我的上一個(gè)項(xiàng)目帖子中閱讀,我在QDSP-6061的5位數(shù)上顯示滾動(dòng)文本,上面寫著“Hell...

關(guān)鍵字: 寄存器 AXI4 QDSP-6061 RTL模塊

【2025年4月11日, 德國(guó)慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)推出用于AURIX?、TRAVEO?和PSOC?的可擴(kuò)展軟件包產(chǎn)品組合...

關(guān)鍵字: PSOC 物聯(lián)網(wǎng) 編譯器

瑞典烏普薩拉,2025年3月11日 — 全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商IAR在德國(guó)紐倫堡舉辦的embedded world 2025展會(huì)上重磅發(fā)布全新云端平臺(tái)。該平臺(tái)為嵌入式軟件開發(fā)人員提供前所未有的自由度與...

關(guān)鍵字: 編譯器 嵌入式 RISC-V
關(guān)閉