版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目二
花樣流水燈設(shè)計
任務(wù)5認識轉(zhuǎn)移指令
學(xué)習(xí)內(nèi)容1.理解無條件移位指令,特別是轉(zhuǎn)移范圍。2.掌握條件移位指令,特別是指令應(yīng)用的場合。3.掌握子程序調(diào)用和返回指令。一、無條件轉(zhuǎn)移指令(4條)指令:LJMP,AJMP,SJMP,JMPLJMPaddr16長跳轉(zhuǎn)指令
——可在64KB范圍內(nèi)跳轉(zhuǎn)AJMPaddr11絕對跳轉(zhuǎn)指令
——可在指令所在的2KB范圍內(nèi)跳轉(zhuǎn)SJMPrel
相對跳轉(zhuǎn)指令
——可在當前PC的-128與+127范圍內(nèi)跳轉(zhuǎn)JMP@A+DPTR間接長跳轉(zhuǎn)指令
——可在以DPTR為基址+A為偏移量之和所指向的64KB程序范圍內(nèi)跳轉(zhuǎn)一、無條件轉(zhuǎn)移指令(4條)1.絕對跳轉(zhuǎn)指令A(yù)JMP addr11;PC+2 PC,指令中addr10~0 PC10~0這是2KB范圍內(nèi)的無條件跳轉(zhuǎn)指令,轉(zhuǎn)移到指定地址,地址為:PC15…PC11a10a9…a0 PC。MCS—51把存貯空間劃分為32個區(qū),每個區(qū)為2KB字節(jié)。AJMP的下一條指令第一個字節(jié)與跳轉(zhuǎn)的入口地址必須在同一區(qū)內(nèi)例:KWR:AJMP addr11設(shè)addr11=001,0000,0000(a10~0)①設(shè)KWR
處地址為:1030H則執(zhí)行指令后轉(zhuǎn)移到:a.PC+2 PC PC=1032H PC15~11=00010。b.00010
001,0000,0000B=1100H②
設(shè)KWR
處地址為:
3030H則執(zhí)行指令后轉(zhuǎn)移到:a.PC+2 PC PC=3032H PC15~11=00110。b.00110
001,0000,0000B=3100H0000H~07FFH0區(qū)0800H~0FFFH1區(qū)1000H~17FFH2區(qū)……一、無條件轉(zhuǎn)移指令(4條)2.短跳轉(zhuǎn)指令SJMP rel
;PC+2+rel PC rel:-128~127rel:-128~127,負數(shù)表示向后轉(zhuǎn)移,正數(shù)表示向前轉(zhuǎn)移。編程時,rel往往用一個標號來代替,由匯編程序在匯編過程中自動計算偏移字節(jié)數(shù),并填入指令代碼中。當手工匯編時,rel一般用補碼表示。例:KRD:SJMP PKRD標號PKRD的地址值為0123H則:0123H=0100+2+rel rel=21H①設(shè) KRD的地址為0100H②
設(shè)KRD的地址為0100H標號PKRD值為00F2H則:00F2H=0100+2+rel rel=0F0H一、無條件轉(zhuǎn)移指令(4條)3.長跳轉(zhuǎn)指令LJMP addr16 ;addr15~0 PC無條件跳轉(zhuǎn)到指定地址,地址空間為64KB程序存貯器地址。4.基址寄存器加變址寄存器間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP @A+DPTR
;(A)+(DPTR)PC例:PM:MOVR1,ARLAADDA,R1MOV DPTR,#PMTBJMP @A+DPTRPMTB:LJMP PM0 LJMP PM1 LJMP PM2 LJMP PM3 LJMP PM4 LJMP PM5 LJMP PM6二、條件轉(zhuǎn)移指令(8條)1.判零轉(zhuǎn)移指令JZrel
;(A)=0,(PC)+2+rel(PC),(A)≠0,(PC)+2(PC)JNZrel
;(A)≠0,(PC)+2+rel(PC),(A)=0,(PC)+2(PC)規(guī)定的條件滿足,則進行轉(zhuǎn)移,條件不滿足則順序執(zhí)行下一條指令。轉(zhuǎn)移到相對于當前PC值的8位移量的地址去。即:
新的PC值=當前PC+偏移量rel我們在編寫匯編語言源程序時,可以直接寫成:
JZ
標號 ;即轉(zhuǎn)移到標號處。二、條件轉(zhuǎn)移指令(8條)1.判零轉(zhuǎn)移指令(2條)JZrel
;(A)=0,(PC)+2+rel(PC),(A)≠0,(PC)+2(PC)JNZrel
;(A)≠0,(PC)+2+rel(PC),(A)=0,(PC)+2(PC)例:MOVA,R0
JZL1MOVR1,#00HAJMPL2L1:MOVR1,#0FFHL2:SJMPL2END如果R0=0,結(jié)果R1=00H。如果R00,結(jié)果是R1中的值為0FFH。程序前:如果R0=0,結(jié)果R1=0FFH。而如果R00,則結(jié)果是R1=00H。若例子中的JZ改成JNZ,看看程序執(zhí)行的結(jié)果是什么?二、條件轉(zhuǎn)移指令(8條)2.比較不相等轉(zhuǎn)移指令(4條)(1)CJNE A,direct,rel①(A)=(direct),(PC)+3 (PC),0 CY ②(A)>(direct),(PC)+3+rel (PC),0 CY ③(A)<(direct),(PC)+3+rel (PC),1 CY (2)CJNE A,#data,rel①(A)=data,(PC)+3 (PC),0 CY ②(A)>data,(PC)+3+rel (PC),0 CY ③(A)<data,(PC)+3+rel (PC),1 CY 二、條件轉(zhuǎn)移指令(8條)2.比較不相等轉(zhuǎn)移指令(3)CJNE Rn,#data,rel①(Rn)=data,(PC)+3 (PC),0 CY ②(Rn)>data,(PC)+3+rel (PC),0 CY ③(Rn)<data,(PC)+3+rel (PC),1 CY (4)CJNE @Ri,#data,rel①((Ri))=data,(PC)+3 (PC),0 CY ②((Ri))>data,(PC)+3+rel (PC),0 CY ③((Ri))<data,(PC)+3+rel (PC),1 CY 功能:比較前面兩個操作數(shù)的大小,如果它們的值不相等,則轉(zhuǎn)移。如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整數(shù)),則置進位標志位Cy置1,否則清“0”Cy。二、條件轉(zhuǎn)移指令(8條)2.比較不相等轉(zhuǎn)移指令利用這些指令,可以判斷兩數(shù)是否相等。如果前面的數(shù)大,則CY=0,否則CY=1。因此在程序轉(zhuǎn)移后再次利用CY就可判斷出哪個數(shù)大,哪個數(shù)小了。
MOVA,R0CJNEA,#10H,L1MOVR1,#0 AJMPL3L1:JCL2
MOVR1,#0AAH AJMPL3L2:MOVR1,#0FFHL3:SJMPL3;如果R0=10H,則不轉(zhuǎn)移R1=00H;如果CY=1即R0<10H,則轉(zhuǎn)移;如果CY=0即R0>10H,則順序執(zhí)行因此最終結(jié)果是:本程序執(zhí)行前,如果R0=10H,則R1=00H;如果R0>10H,則R1=0AAH;如果R0<10H,則R1=0FFH。二、條件轉(zhuǎn)移指令(8條)3.減1不為0轉(zhuǎn)移指令(2條)DJNZ Rn,rel
;(Rn)-1 (Rn)①(Rn)=0,(PC)+2 (PC) ②(Rn)≠0,(PC)+2+rel(PC)DJNZ direct,rel
;(direct)-1 (direct) ①(direct)=0,(PC)+3
(PC) ②(direct)≠0,(PC)+3+rel(PC),轉(zhuǎn)移功能:將源操作數(shù)(Rn或direct)減1,結(jié)果回送到Rn寄存器或direct中去。如果結(jié)果不為0則轉(zhuǎn)移。允許程序員把寄存器Rn或內(nèi)部RAM的direct單元用作程序循環(huán)計數(shù)器。主要用于控制程序循環(huán)。以減1后是否為“0”作為轉(zhuǎn)移條件,即可實現(xiàn)按次數(shù)控制循環(huán)。二、條件轉(zhuǎn)移指令(8條)3.減1不為0轉(zhuǎn)移指令例:MOV23H,#0AHCLRALOOP:ADDA,23HDJNZ23H,LOOPSJMP$程序段的執(zhí)行過程是:將23H單元中的數(shù)連續(xù)相加,存至A中,每加一次,23H單元中的數(shù)值減1,直至減到0,共加(23H)次。(A)=10+9+8+7+6+5+4+3+2+1=55D=37H三、子程序調(diào)用與返回指令(4條)子程序:具有一定功能的公用程序段。在子程序的末尾一般是一條返回指令(RET)。執(zhí)行返回主程序指令執(zhí)行返回主程序指令子程序SUB執(zhí)行調(diào)用子程序指令執(zhí)行調(diào)用子程序指令主程序MAINCPU正在執(zhí)行主程序CPU執(zhí)行子程序AB主程序二次調(diào)用子程序示意圖B主程序MAIN子程序SUB1子程序SUB2轉(zhuǎn)向SUB1轉(zhuǎn)向SUB2返回SUB1返回MAIN二級子程序嵌套示意圖三、子程序調(diào)用與返回指令(4條)當主程序調(diào)用子程序時①把下一條指令地址 (SP),(SP)+2(SP)②子程序起始地址 PC當子程序執(zhí)行返回時:把調(diào)用子程序處下一條指令地址從堆棧中取出 PC,(SP)-2 (SP)三、子程序調(diào)用與返回指令(4條)壓棧1.短調(diào)用指令A(yù)CALL addr11
①(PC)+2 PC②(SP)+1 SP,(PC7~0) (SP)低③(SP)+1 SP,(PC15~8) (SP)高④PC15PC14PC13PC12PC11a10a9…a0 PC(轉(zhuǎn)向執(zhí)行子程序)例:(SP)=60H,標號MA值為0123H。SUB起始地址0345HMA:ACALL SUB
①(PC)+2②(SP)=61H,(61H)=25H ③(SP)=62H,(62H)=01H ④00000
01101000101=0345H①PC=0125H PC15~11=00000ACALL的下一條指令第一字節(jié)與子程序的入口地址必須在同一區(qū)內(nèi)。三、子程序調(diào)用與返回指令(4條)2.長調(diào)用指令壓棧LCALL addr16 ;addr1664KB地址區(qū)①(PC)+3 PC②(SP)+1 SP,(PC7~0) (SP)低③(SP)+1 SP,(PC15~8) (SP)高④addr16 PC例:(SP)=60H,START:標號地址0100HDIR:標號地址8100HSTART:LCALL DIR
②(SP)=61H,(61H)=03H ③(SP)=62H,(62H)=01H ④(PC)=8100H①(PC)=0103H三、子程序調(diào)用與返回指令(4條)3.返回指令①從子程序返回RET
②(SP)-1 SP,((SP))PC7~0③(SP)-1 SP①((SP))PC15~8即把堆棧頂?shù)膬?nèi)容送到PC寄存器中。例:(SP)=62H,(61H)=30H,(62H)=07HRET
②(SP)=61H;(61H) PC7~0,PC7~0=30H③(SP)=60H(PC)=0730H,
從0730H處開始執(zhí)行。①07H PC15~8,
PC15~8=07H 三、子程序調(diào)用與返回指令(4條)3.返回指令②從中斷返回RETI②(SP)-1 SP,((SP))PC7~0③(SP)-1 SP①((SP))PC15~8中斷返回指令把棧頂?shù)膬?nèi)容送到PC寄存器中,同時釋放中斷邏輯使之能接受同級的另一中斷請求。CPU執(zhí)行RETI指令后至少要再執(zhí)行一條指令,才能響應(yīng)新的中斷請求。四、空操作指令(1條)NOP ;除(PC)+1(PC)外無任何操作。一般用于延時。ADD INC —IncrementSUBB —SubtractWithBorrowADDC —Add with Carry flagDEC —DecrementMUL —MultiplyDIV —DivideDA —Decimal AdjustANL —AndLogical CLR —ClearXRL —Exclusive-OR
LogicalORL —OR
LogicalCPL —ComplementLogicalRL —RotateLeftRLC —RotateLeftwithCarryflagRR —RotateRightRRC —RotateRightwithCarryflagSWAP —指令助記符注釋MOV —Move MOVC—MoveCode MOVX—MoveExternalRAMPUSH —POP —XCH —ExchangeXCHD —Exchangelow-order Digit指令助記符注釋ACALL—AbsoluteSubroutineCallLCALL—LongSubroutineCallRET—ReturnfromSubroutineRETI—ReturnfromInterruptAJMP—AbsoluteJumpLJMP—LongJumpSJMP—ShortJumpJZ—JumpifAccumulatorisZeroJNZ—JumpifAccumulatorisNotZeroJC—JumpifCarryflagisSetJNC—JumpifNoCarryflagJB—JumpifdirectBitSetJNB—JumpifdirectBitNotSetJBC—JumpifdirectBitSet&ClearBitCJNE—CompareJmpifNotEqualDJNZ—DecrementJumpifNotZeroNOP—NoOperation預(yù)習(xí)控制程序轉(zhuǎn)移指令17條,特別是子程序調(diào)用和返回指令。任務(wù)布置3.4.2偽指令
偽指令不是真正的指令,無對應(yīng)的機器碼,在匯編時不產(chǎn)生目標程序,它只是用來對匯編過程進行某種控制。
標準的MCS-51匯編程序定義的偽指令常用的有以下幾條:
1.ORG(匯編起始命令)功能:規(guī)定下面的目標程序的起始地址
格式:[標號:]ORG16位地址例:ORG2000H
START:MOVA,#64H
規(guī)定了標號START的地址是2000H,又規(guī)定了匯編后的第一條指令從2000H開始存放。
ORG可以多次出現(xiàn)在程序的任何地方,當它出現(xiàn)時,下一條指令的地址由此重新定位。注意:所規(guī)定的地址是從小到大,且不允許有重疊。2.END(匯編結(jié)束命令)
功能:通知匯編程序結(jié)束匯編,在END之后所有的匯編語言指令均不予處理。一定放在程序末尾!
格式:[標號:]END3.EQU(等值命令)
功能:將一個數(shù)或者特定的匯編符號賦予規(guī)定的字符名稱。
格式:字符名稱EQU數(shù)或匯編符號
注意:字符名稱不等于標號(其后沒有冒號),用EQU賦值的符號名可以用作數(shù)據(jù)地址,代碼地址,位地址,或是一個立即數(shù)。項可以是數(shù),也可以是匯編符號。3.4.2偽指令例1:AAEQUR1
MOVA,AA;(R1)
A例2:A10EQU10
DELAYEQU07EBH
MOVA,A10
LCALLDELAY
這里A10當作片內(nèi)RAM的一個直接地址,而DELAY定義了一個16位地址,實際上它是一個子程序的入口。3.4.2偽指令4.DATA(數(shù)據(jù)地址賦值命令)功能:將數(shù)據(jù)地址或代碼地址賦予規(guī)定的字符名稱。格式:字符名稱DATA表達式
DATA命令功能與EQU類似,但有以下差別:
(1)EQU定義的字符名必須先定義后使用,而DATA定義的字符名可以后定義先使用。
(2)EQU可以把一個匯編符號賦給字符名稱,而DATA只能把數(shù)據(jù)賦給字符名。
(3)DATA語句可以把一個表達式的值賦給字符名稱,其中表達式應(yīng)是可求值的。
DATA偽指令常在程序中用來定義數(shù)據(jù)地址。3.4.2偽指令5.DB(定義字節(jié)命令)
功能:從指定的地址單元開始,定義若干個8位內(nèi)存單元的內(nèi)容。
格式:[
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 調(diào)研報告范文
- 2024-2025學(xué)年高中語文2.4致云雀核心素養(yǎng)練習(xí)含解析新人教版必修上冊
- 2025南京市勞務(wù)派遣勞動合同書
- 2025年宜昌貨運資格證題庫下載安裝
- 2025海洋工程裝備項目工程項貨物采購合同管理
- 中國鋼琴盆項目投資可行性研究報告
- 聚酯尼龍網(wǎng)布行業(yè)深度研究報告
- 發(fā)須飾品行業(yè)深度研究報告
- 上海外國語大學(xué)賢達經(jīng)濟人文學(xué)院《自動化學(xué)科前沿講座》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025證券咨詢服務(wù)合同
- 2022-2023學(xué)年廣東省廣州市增城區(qū)九年級(上)期末數(shù)學(xué)試卷(含解析)
- 心理咨詢與治療學(xué)智慧樹知到期末考試答案章節(jié)答案2024年南方醫(yī)科大學(xué)
- 2024年輔警招聘考試試題庫及完整答案(全優(yōu))
- 抖音等短視頻mcn機構(gòu)組建與運營商業(yè)計劃書
- 護理方案優(yōu)化總結(jié)分析報告
- 美國史智慧樹知到期末考試答案2024年
- 二年級體育教師工作述職報告
- 2024年1月電大國家開放大學(xué)期末試題及答案:物流信息系統(tǒng)管理
- 【川教版】《生命 生態(tài) 安全》五上第8課《防患于未“燃”》課件
- 家庭責任醫(yī)生團隊長競聘專項方案
- 卓有成效的管理者pdf
評論
0/150
提交評論