調(diào)用及返回指令
發(fā)布時(shí)間:2016/7/11 22:18:27 訪(fǎng)問(wèn)次數(shù):1073
在程序設(shè)計(jì)時(shí),對(duì)經(jīng)常使用的具有一定功能的程序段可以設(shè)計(jì)為子程序,在需要使用時(shí)可以調(diào)用它,ADM705ARZ這樣可以使程序的結(jié)構(gòu)更加清楚,同時(shí)減少重復(fù)指令所占的內(nèi)存空間,實(shí)現(xiàn)程序的模塊化設(shè)計(jì)。
在調(diào)用子程序時(shí),80C51系統(tǒng)有專(zhuān)門(mén)的子程序調(diào)用指令。子程序調(diào)用時(shí),必須要中斷原有的指令執(zhí)行順序,轉(zhuǎn)移到子程序的入口地址去執(zhí)行子程序。在子程序執(zhí)行完畢后,又要返回到原有程序中斷的位置,繼續(xù)往下執(zhí)行。所以這個(gè)斷點(diǎn)位置(地址)要保存起來(lái),一般都是放在堆棧中保存。我們把返回到原有程序繼續(xù)執(zhí)行的位置稱(chēng)為程序斷點(diǎn),也就是子程序調(diào)用指令的下一條指令的地址。
調(diào)用指令
MCs-51中有兩條子程序調(diào)用指令:
ACALL addr11 ;(PC)+2→PC
KsD+1→sRlPC,~0)→fsPl(斷點(diǎn)低8位壓入堆棧)
fsD+1→sECC15~:)→lSP,(斷點(diǎn)高8位壓入堆棧)
addr11→PClO~o
LCALL addr16 ;(PC)+3→PC
KsP)+1→s:lPC7~o)→lsPJ(斷點(diǎn)低8位壓入堆棧)
fsD+1→s只rPc15~:)→fsD(斷點(diǎn)高8位壓入堆棧)
addr16→PC
ACALL ad&11是短調(diào)用指令,同樣addr11是被調(diào)用子程序首地址的低11位,編程時(shí)常用標(biāo)號(hào)來(lái)表示,同AJMP指令一樣,被調(diào)用的子程序的起始地址必須與ACALL下面指令的第一個(gè)字節(jié)在同一個(gè)9KB區(qū)域的頁(yè)面內(nèi)。
LCALL addr16是長(zhǎng)調(diào)用指令,被調(diào)用的子程序可以在“KB范圍內(nèi)的任何位置。
【例4.34】設(shè)(sD=ωH,標(biāo)號(hào)K11的值為8000H,標(biāo)號(hào)AAs的值為8200H,在執(zhí)行指令:Kl1: ACALL AAs
后結(jié)果為rsP)=62H,“1H)=02H,∞2H)=80H,eC)=8⒛oH。
在程序設(shè)計(jì)時(shí),對(duì)經(jīng)常使用的具有一定功能的程序段可以設(shè)計(jì)為子程序,在需要使用時(shí)可以調(diào)用它,ADM705ARZ這樣可以使程序的結(jié)構(gòu)更加清楚,同時(shí)減少重復(fù)指令所占的內(nèi)存空間,實(shí)現(xiàn)程序的模塊化設(shè)計(jì)。
在調(diào)用子程序時(shí),80C51系統(tǒng)有專(zhuān)門(mén)的子程序調(diào)用指令。子程序調(diào)用時(shí),必須要中斷原有的指令執(zhí)行順序,轉(zhuǎn)移到子程序的入口地址去執(zhí)行子程序。在子程序執(zhí)行完畢后,又要返回到原有程序中斷的位置,繼續(xù)往下執(zhí)行。所以這個(gè)斷點(diǎn)位置(地址)要保存起來(lái),一般都是放在堆棧中保存。我們把返回到原有程序繼續(xù)執(zhí)行的位置稱(chēng)為程序斷點(diǎn),也就是子程序調(diào)用指令的下一條指令的地址。
調(diào)用指令
MCs-51中有兩條子程序調(diào)用指令:
ACALL addr11 ;(PC)+2→PC
KsD+1→sRlPC,~0)→fsPl(斷點(diǎn)低8位壓入堆棧)
fsD+1→sECC15~:)→lSP,(斷點(diǎn)高8位壓入堆棧)
addr11→PClO~o
LCALL addr16 ;(PC)+3→PC
KsP)+1→s:lPC7~o)→lsPJ(斷點(diǎn)低8位壓入堆棧)
fsD+1→s只rPc15~:)→fsD(斷點(diǎn)高8位壓入堆棧)
addr16→PC
ACALL ad&11是短調(diào)用指令,同樣addr11是被調(diào)用子程序首地址的低11位,編程時(shí)常用標(biāo)號(hào)來(lái)表示,同AJMP指令一樣,被調(diào)用的子程序的起始地址必須與ACALL下面指令的第一個(gè)字節(jié)在同一個(gè)9KB區(qū)域的頁(yè)面內(nèi)。
LCALL addr16是長(zhǎng)調(diào)用指令,被調(diào)用的子程序可以在“KB范圍內(nèi)的任何位置。
【例4.34】設(shè)(sD=ωH,標(biāo)號(hào)K11的值為8000H,標(biāo)號(hào)AAs的值為8200H,在執(zhí)行指令:Kl1: ACALL AAs
后結(jié)果為rsP)=62H,“1H)=02H,∞2H)=80H,eC)=8⒛oH。
上一篇:條件轉(zhuǎn)移指令
上一篇:返回指令
熱門(mén)點(diǎn)擊
- 用戶(hù)RAM區(qū)(30H~7FH)
- 接觸孔(Contact)
- BPsG的流動(dòng)性取決于薄膜的組分
- 標(biāo)準(zhǔn)清洗液(sC-2)去除堿金屬離子
- 中斷撤銷(xiāo)
- Noyce發(fā)明的第一塊單片集成電路
- 0.18uM LOgic1g/33v1P6M
- 天線(xiàn)效應(yīng)的消除
- 微處理器的基本組成
- 柵氧化層厚度對(duì)熱載流子效應(yīng)的影晌
推薦技術(shù)資料
- 按鈕與燈的互動(dòng)實(shí)例
- 現(xiàn)在趕快去看看這個(gè)目錄卞有什么。FGA15N120AN... [詳細(xì)]
- RA Arm Cortex-M
- 110V, 75A RMS集成
- 微型C語(yǔ)言可編程處理器技術(shù)參數(shù)
- iNEMO系統(tǒng)級(jí)封裝 (SiP
- 首款 EVC 技術(shù)ST31N
- 嵌入式Flash技術(shù)制造ST54L芯片
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究