版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
3.3.5控制轉(zhuǎn)移類指令1.無條件轉(zhuǎn)移指令(4條)a.相對轉(zhuǎn)移指令(1條)SJMPb.長跳轉(zhuǎn)指令(1條)LJMPc.短跳轉(zhuǎn)指令(1條)AJMPd.間接轉(zhuǎn)移指令(1條)JMP2.子程序調(diào)用和返回指令(4條)a.調(diào)用指令(2條)ACALLLCALLb.返回指令(2條)RETRETI3.空操作指令(1條)NOP4.條件轉(zhuǎn)移指令(13條)a.判C轉(zhuǎn)移指令(2條)JCJNCb.判bit轉(zhuǎn)移指令(3條)JBJNBJBCc.判A轉(zhuǎn)移指令(2條)JZJNZd.減1非0則轉(zhuǎn)移指令(2條)DJNZ兩種形式e.比較不相等則轉(zhuǎn)移指令(4條)CJNE四種形式一.無條件轉(zhuǎn)移指令(4條)
1.長跳轉(zhuǎn)指令LJMP
(3字節(jié))
LJMPaddr16 ;PCaddr16
執(zhí)行該指令時,將目標(biāo)語句的16位地址addr16裝入PC,程序無條件轉(zhuǎn)向指定的目標(biāo)語句執(zhí)行。由于長跳轉(zhuǎn)指令提供的是16位地址,對應(yīng)64KB的程序存儲器地址空間,所以可跳轉(zhuǎn)到64KB程序存儲器地址空間的任何地方。實際應(yīng)用中長跳轉(zhuǎn)匯編指令寫作“LJMP目標(biāo)語句標(biāo)號”的形式,如“LJMPLOOP”。2.短跳轉(zhuǎn)指令A(yù)JMP
(2字節(jié))
AJMPaddr11;PC10~0addr11這是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令。執(zhí)行該指令時,將目標(biāo)語句的低11位地址送入PC的低11位,而PC的高5位保持不變,這樣得到跳轉(zhuǎn)的目的地址。實際應(yīng)用中短跳轉(zhuǎn)匯編指令寫作“AJMP目標(biāo)語句標(biāo)號”的形式,如“AJMPLOOP”。注意:目標(biāo)地址與AJMP后面一條指令必須在同一個2KB區(qū)域。表3-2所示為ROM空間中32個2KB區(qū)間。表3-2ROM空間中的32個2KB區(qū)間3.相對轉(zhuǎn)移指令SJMP
(2字節(jié))
SJMPrel ;PCPC+2+rel執(zhí)行該指令時,先將(PC)+2,再把指令中帶符號的偏移量加到PC上,得到跳轉(zhuǎn)的目標(biāo)地址送入PC。rel為相對偏移量,是有符號8位二進制數(shù)(補碼形式),取值范圍為+127~-128(00H~7FH對應(yīng)表示0~+127,80H~FFH對應(yīng)表示-128~-1)。負(fù)數(shù)表示反向轉(zhuǎn)移,正數(shù)表示正向轉(zhuǎn)移。實際應(yīng)用中SJMP的匯編指令寫作“SJMP目標(biāo)語句標(biāo)號”的形式,如“SJMPLOOP”。由匯編程序在匯編過程中自動計算偏移地址rel。4.間接轉(zhuǎn)移指令JMP
(1字節(jié))
JMP@A+DPTR;PC(A)+(DPTR)本指令可代替眾多的判別跳轉(zhuǎn)指令,又稱為散轉(zhuǎn)指令,多用于多分支程序結(jié)構(gòu)中。跳轉(zhuǎn)的目標(biāo)地址不是由標(biāo)號簡單地決定,而是累加器A和數(shù)據(jù)指針DPTR之和,它可以是64KB存儲空間的任何地方。指令對A、DPTR和標(biāo)志位均無影響。
注意:以上四條指令結(jié)果均不影響程序狀態(tài)字寄存器PSW。
5.LJMP、AJMP、SJMP、JMP四條無條件轉(zhuǎn)移指令的區(qū)別:(1)轉(zhuǎn)移范圍不一樣。LJMP、JMP轉(zhuǎn)移范圍是64KB;AJMP轉(zhuǎn)移范圍是與當(dāng)前PC值同一個2KB區(qū)間;SJMP轉(zhuǎn)移范圍是相對當(dāng)前PC值的-128B~+127B范圍內(nèi)。(2)指令長短不一樣。LJMP是3字節(jié)指令;AJMP、SJMP是2字節(jié)指令;JMP是1字節(jié)指令。(3)指令機器碼構(gòu)成不同。AJMP、LJMP、JMP后跟的是絕對地址,而SJMP后跟的是相對地址。(4)地址特點不同。LJMP、AJMP、SJMP的轉(zhuǎn)移目標(biāo)地址是固定的,程序執(zhí)行過程中不變;JMP的轉(zhuǎn)移目標(biāo)地址隨程序的執(zhí)行是動態(tài)變化的。(5)原則上,所有用SJMP或AJMP的地方都可以用LJMP來替代。二.條件轉(zhuǎn)移指令(13條)條件轉(zhuǎn)移指令是指在滿足一定條件時進行相對轉(zhuǎn)移,程序跳轉(zhuǎn)到目標(biāo)地址執(zhí)行;否則程序繼續(xù)執(zhí)行本指令的下一條指令。轉(zhuǎn)移的目標(biāo)指令首地址必須在以下一條指令的起始地址為中心的256個字節(jié)范圍之內(nèi)(-128~+127),否則匯編出錯,無法執(zhí)行。當(dāng)條件滿足時,PC←(PC)+N+rel,其中(PC)為條件轉(zhuǎn)移指令(機器指令)的第一個字節(jié)的地址,N為該轉(zhuǎn)移指令的字節(jié)數(shù)(長度)。條件轉(zhuǎn)移指令根據(jù)判斷條件可分為:a.判C轉(zhuǎn)移指令(2條)JCJNCb.判bit轉(zhuǎn)移指令(3條)JBJNBJBCc.判A轉(zhuǎn)移指令(2條)JZJNZd.減1非0則轉(zhuǎn)移指令(2條)DJNZ兩種形式e.比較不相等則轉(zhuǎn)移指令(4條)CJNE四種形式1.判C轉(zhuǎn)移指令(2條)(1)(CY)=1則轉(zhuǎn)移指令
JCrel
指令功能:若(CY)=1,則PC←(PC)+rel,轉(zhuǎn)移;若(CY)=0,則程序順序執(zhí)行。實際應(yīng)用中JC的匯編指令寫作“JC目標(biāo)語句標(biāo)號”的形式,如“JCLOOP”。(2)(CY)=0則轉(zhuǎn)移指令
JNCrel
指令功能:若(CY)=0,則PC←(PC)+rel,轉(zhuǎn)移;若(CY)=1,則程序順序執(zhí)行。2.判bit轉(zhuǎn)移指令(3條)(1)(bit)=1則轉(zhuǎn)移指令
JBbit,rel
指令功能:若(bit)=1,則PC←(PC)+rel,轉(zhuǎn)移;若(bit)=0,則程序順序執(zhí)行。(2)(bit)=0則轉(zhuǎn)移指令
JNBbit,rel
指令功能:若(bit)=0,則PC←(PC)+rel,轉(zhuǎn)移;若(bit)=1,則程序順序執(zhí)行。(3)(bit)=1則轉(zhuǎn)移并清0指令
JBCbit,rel
指令功能:若(bit)=1,則bit←0且PC←(PC)+rel,轉(zhuǎn)移;若(bit)=0,則程序順序執(zhí)行。3.判A轉(zhuǎn)移指令(2條)(1)(A)=0則轉(zhuǎn)移指令
JZrel
指令功能:若(A)=0,則PC←(PC)+rel,轉(zhuǎn)移;若(A)
0,則程序順序執(zhí)行。(2)(A)
0則轉(zhuǎn)移指令
JNZrel
該指令功能:若(A)
0,則PC←(PC)+rel,轉(zhuǎn)移;若(A)=0,則程序順序執(zhí)行。4.減1非0則轉(zhuǎn)移指令(2條)(1)Rn減1非0則轉(zhuǎn)移指令DJNZRn,rel
指令功能:Rn←(Rn)-1,若(Rn)
0,則PC←(PC)+rel,轉(zhuǎn)移;若(Rn)=0,則程序順序執(zhí)行。(2)direct減1非0則轉(zhuǎn)移指令DJNZdirect,rel指令功能:direct←(direct)-1,若(direc)
0,則PC←(PC)+rel,轉(zhuǎn)移;若(direc)=0,則程序順序執(zhí)行。例:將內(nèi)部RAM中40H~4FH的數(shù)依次送到60H~6FH單元中。程序如下:ORG0000HLJMPSTARTORG0030HSTART:MOVR0,#30H;數(shù)據(jù)源首地址MOVR1,#4FH;數(shù)據(jù)存放目標(biāo)首地址MOVR2,#16;數(shù)據(jù)個數(shù)LOOP:MOVA,@R0MOV@R1,AINCR0
DECR1DJNZR2,LOOPSJMP$END5.比較不相等則轉(zhuǎn)移指令(4條)這組指令的功能是:比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。如果第一個操作數(shù)(無符號整數(shù))小于第二個操作數(shù),則進位標(biāo)志CY置“1”,否則清“0”,但不影響任何操作數(shù)的內(nèi)容。(1)CJNEA,direct,rel該指令功能:若(A)≥(direct),(CY)=0;若(A)<(direct),CY=1;若(A)≠(direct),則PC←(PC)+rel,轉(zhuǎn)移;若(A)=(direct),則程序順序執(zhí)行。(2)CJNEA,#data,rel
該指令功能:若(A)≥data,(CY)=0;若(A)<data,CY=1;若(A)≠data,則PC←(PC)+rel,轉(zhuǎn)移;若(A)=data,則程序順序執(zhí)行。(3)CJNERn,#data,rel該指令功能:若(Rn)≥data,(CY)=0;若(Rn)<data,CY=1;若(Rn)≠data,則PC←(PC)+rel,轉(zhuǎn)移;若(Rn)=data,則程序順序執(zhí)行。(4)CJNE@Ri,#data,rel該指令功能:若((Ri))≥data,(CY)=0;若((Ri))<data,CY=1;若((Ri))≠data,則PC←(PC)+rel,轉(zhuǎn)移;若((Ri))=data,則程序順序執(zhí)行.例:如果(A)≠00H,轉(zhuǎn)移到CX1;如果(R1)≠10H,轉(zhuǎn)移到CX2;如果(A)≠(60H),轉(zhuǎn)移到CX3。程序段如下:CJNEA,#00H,CX1……CJNER1,#10H,CX2……CJNEA,60H,CX3……CX1:…………CX2:…………CX3:……三.調(diào)用和返回指令(4條)在程序設(shè)計中,通常把具有一定功能的公用程序段編制成子程序,當(dāng)主程序需要使用子程序時用調(diào)用指令,而在子程序的最后安排一條子程序返回指令,以便執(zhí)行完子程序后能返回主程序繼續(xù)執(zhí)行。有兩條調(diào)用指令,可以實現(xiàn)子程序的短調(diào)用和長調(diào)用。目標(biāo)地址的形成方式與AJMP和LJMP相似。這兩條指令的執(zhí)行不影響任何標(biāo)志位。1.長調(diào)用指令LCALL指令格式:LCALLaddr16
這條指令無條件調(diào)用目標(biāo)地址addr16的子程序。LCALL指令執(zhí)行步驟如下:①產(chǎn)生當(dāng)前PC:PC←(PC)+3,(PC)+3是因為該指令為三字節(jié)指令。②斷點地址低8位保存到堆棧中:SP←(SP)+1,(SP)←(PC0~7)③斷點地址高8位保存到堆棧中:SP←(SP)+1,(SP)←(PC8~15)④形成轉(zhuǎn)移目標(biāo)地址:PC←addr16,轉(zhuǎn)去執(zhí)行以該地址為入口的程序。LCALL指令可以調(diào)用程序存儲器64KB范圍內(nèi)任何地方的子程序。指令執(zhí)行后不影響任何標(biāo)志。匯編語句寫作“LCALL目標(biāo)子程序標(biāo)號”的形式,如“LCALLDELAY”(調(diào)用DELAY子程序,即起始標(biāo)號為DELAY的子程序)。2.短調(diào)用指令A(yù)CALL指令格式:ACALLaddr11ACALL指令執(zhí)行步驟如下:①產(chǎn)生當(dāng)前PC:PC←(PC)+2,該指令為雙字節(jié)指令②斷點地址低8位保存到堆棧中:SP←(SP)+1,(SP)←(PC0~7)③斷點地址高8位保存到堆棧中:SP←(SP)+1,(SP)←(PC8~15)④形成轉(zhuǎn)移目標(biāo)地址:PC0~10←addr11,PC11~15不變,轉(zhuǎn)去執(zhí)行以該地址為入口的程序這是一條2KB范圍內(nèi)的子程序調(diào)用指令。所用的子程序的入口地址必須與ACALL下面一條指令的第一個字節(jié)在同一個2KB區(qū)域的存儲器區(qū)內(nèi),否則匯編出錯,程序無法執(zhí)行。匯編語句寫作“ACALL目標(biāo)子程序標(biāo)號”的形式,如“ACALLDELAY”(調(diào)用DELAY子程序,即起始標(biāo)號為DELAY的子程序)。3.返回指令(2條)RETRETI
(1)RET ;子程序返回
;PC15~8←(SP),SP←SP-1 ;PC7~0←(SP),SP←SP-1指令功能:從堆棧中彈出了由調(diào)用指令壓入堆棧保護的斷點地址送入PC,從而結(jié)束子程序的執(zhí)行,程序返回到斷點處繼續(xù)執(zhí)行。
(2)RETI ;中斷程序返回
;PC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)學(xué)校衛(wèi)生清潔制度
- 教培訓(xùn)學(xué)校教學(xué)制度
- 培訓(xùn)學(xué)校物質(zhì)采購制度
- 烈士陵園培訓(xùn)管理制度
- 噴漆房教育培訓(xùn)制度
- 民兵骨干培訓(xùn)制度
- 培訓(xùn)班課堂加減分制度
- 郵政培訓(xùn)日常管理制度
- 三基學(xué)習(xí)培訓(xùn)制度
- 網(wǎng)絡(luò)培訓(xùn)教學(xué)管理制度
- 數(shù)字孿生方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 2026長治日報社工作人員招聘勞務(wù)派遣人員5人備考題庫及答案1套
- 機動車駕校安全培訓(xùn)課件
- 河道清淤作業(yè)安全組織施工方案
- 2025年役前訓(xùn)練考試題庫及答案
- 2026年七臺河職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 2023-2024學(xué)年廣東省廣州市小學(xué)數(shù)學(xué)二年級上冊期末自我評估試題
- YS/T 971-2014鈦鎳形狀記憶合金絲材
- 鈷冶金概述課件
- 方小丹建筑地基基礎(chǔ)設(shè)計的若干問題課件
評論
0/150
提交評論