機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
程序控制指令
程序控制指令
 更新時間:2009-11-4 14:54:05  點擊數(shù):0
【字體: 字體顏色

1. 程序控制指令的一般性說明

*      程序控制指令又分“無條件轉(zhuǎn)移”、“調(diào)用與返回”和“條件轉(zhuǎn)移”等三類。

*      對程序控制指令應(yīng)掌握:轉(zhuǎn)移地址如何生成及其轉(zhuǎn)移范圍。

*      注意!MCS-51條件轉(zhuǎn)移指令的運用與計算并無特別的聯(lián)系。

*      位值判別轉(zhuǎn)移使程序設(shè)計更為靈活,是MCS-51指令系統(tǒng)的特色。

*      應(yīng)特別注意變址轉(zhuǎn)移指令JMP與比較轉(zhuǎn)移指令CJNE的用法。

操作碼

操作數(shù)

條 件

轉(zhuǎn) 移 地 址

說        明

 

AJMP

 

 addr11

 

無條件

(PC)←(PC)+2

(PC)0-10←addr11

短轉(zhuǎn)移,只改變PC的低11位,轉(zhuǎn)移范圍2K。

LJMP

addr16

無條件

(PC)←addr16

長轉(zhuǎn)移,轉(zhuǎn)移范圍全64K空間

SJMP

rel

無條件

(PC)←(PC)+2+rel

相對轉(zhuǎn)移 ,范圍-126~+129。

JMP

@A+DPTR

無條件

(PC)←(A)+(DPTR)

散轉(zhuǎn)指令,根據(jù)A值變址轉(zhuǎn)移

 

ACALL

 

addr11

 

無條件

(PC)←(PC)+ 2

(PC)L、(PC)H壓棧

(PC)0-10←addr11

短調(diào)用,只改變PC的低11位,轉(zhuǎn)移范圍2K。

LCALL

addr16

無條件

(PC)←(PC)+ 3

(PC)L、(PC)H壓棧

(PC)←addr16

長調(diào)用,調(diào)用范圍全64K空間

RET

隱含

((SP))

 

無條件

(PC)H←((SP))

(PC)L←((SP)-1))

 子程序返回。

RETI

 中斷返回。

JZ

 

rel

(A)= 0

 

(PC)←(PC)+2+rel

 

 根據(jù)A的值條件轉(zhuǎn)移。

JNZ

(A)≠0

JC

 

rel

(C)= 0

 

(PC)←(PC)+2+rel

 

 根據(jù)C的值條件轉(zhuǎn)移。

JNC

(C)= 1

JNB

 

bit, rel

 

(bit)=0

 

(PC)←(PC)+3+rel

 

 位值判別轉(zhuǎn)移。(負邏輯)

JB

(bit)=1

 位值判別轉(zhuǎn)移。(正邏輯)

JBC

(bit)=1

 同 JB ,加(bit)清零功能。

 

DJNZ

 Rn, rel

(Rn)-1≠0

(PC)←(PC)+2+rel

 循環(huán)指令。循環(huán)計數(shù)器自動

 減1,歸0則退出循環(huán)。

dir, rel

(dir)-1≠0

(PC)←(PC)+3+rel

操作碼

 

操作數(shù)

 

條   件

 

轉(zhuǎn) 移 地 址

 

說        明

 

 

CJNE

 

A,dir,rel

A,#data,rel Rn,#data,rel

@Ri,#data,rel

(A)≠(direct)

(A)≠#data

(Rn)≠#data

((Ri))≠#data

 

 

(PC)←(PC)+3+rel

    按無符號數(shù)比較,兩數(shù)不等則轉(zhuǎn)移。若前一數(shù)小,C置1;若前一數(shù)不小于后一數(shù),C清零。

NOP

(PC)←(PC)+1

空操作,順序執(zhí)行。

 

 

2. AJMP、LJMP及SJMP的轉(zhuǎn)移范圍

 

指令

轉(zhuǎn)移地址

轉(zhuǎn)移范圍

說明

 

AJMP addr11

(PC)+2的高5位

+ addr11

 

(PC)+2所在的2k頁

2k頁:X000H~X7FFH

      X800H~XFFFH

LJMP addr16

addr16

全64k空間

 

SJMP rel

(PC)+2+rel

(PC)-126~(PC)+129

Rel是8位有符號數(shù)

注:①表中的(PC)是轉(zhuǎn)移指令的地址。

    ②在實際使用時,地址一般用標號表示。

 

3. 變址轉(zhuǎn)移指令JMP的使用

*      JMP的轉(zhuǎn)移地址 = 基址(DPTR)+變址偏移量(A)。

*      應(yīng)用例:按照(A)= 0,1,2,分別轉(zhuǎn)向三個不同的程序分支。

MOV  DPTR,#GO  ;設(shè)立散轉(zhuǎn)入口地址

MOV  B A,       ;

RL   A            ;    (A) ←(A)+3

ADD  A,B        ;

JMP  @A+DPTR

GO: LJMP  GO1         ;指令地址為GO

LJMP  GO2         ;指令地址為GO+3

LJMP  GO3         ;指令地址為GO+6

*      問題一:上例中,如果由LJMP改用AJMP,程序應(yīng)如何變化?

*      問題二:上例中,如果A的值大于2會如何?怎樣解決?

4.    條件轉(zhuǎn)移指令的使用

*      因為A與C的值并不一定由計算操作而改變,故JZ、JNZ、JC、JNC等指令的運用與計算并無特別的聯(lián)系,

*      位值判別轉(zhuǎn)移指令使條件轉(zhuǎn)移的功能更豐富和靈活。例如:

*      如果(B)³0,轉(zhuǎn)向POS分支:JNB  B.7,POS

*      如果計算溢出,轉(zhuǎn)向FL分支: JB  OV,F(xiàn)L

*      如果C=1,將C清零并轉(zhuǎn)向NEG分支:JBC  C,NEG

*      由P1.4檢測火災(zāi)傳感器,1有效。傳感器報警時轉(zhuǎn)向FIRE分支:JB  P1.4,F(xiàn)IRE

*      可以在http://www.51hei.com 單片機教程 首頁找更多資料哦

 

5.      比較轉(zhuǎn)移指令CJNE及其使用

*      格式:CJNE  前數(shù),后數(shù),相對偏移量

轉(zhuǎn)移條件:前數(shù)≠后數(shù)

對C的影響:按無符號數(shù)減法。前數(shù)減后數(shù),有借位C = 1,否則C = 0。

 

*      應(yīng)用例:A、B中為無符號數(shù),比較兩數(shù),大數(shù)存A,小數(shù)存B。

CJNE  A,B,0 

JNC  DONE

EXC  A,B

DONE:……

轉(zhuǎn)載須保留地址:http://www.51hei.com/mcu/284.html

 

*      應(yīng)用例:A、B中為有符號數(shù),比較兩數(shù),大數(shù)存A,小數(shù)存B。

有符號數(shù)比較的算法:

以A 與B 表示A與B的無符號值。

對于A >B 有,若A>0 A>B,A<0 A<B;

據(jù)此可以畫出右邊的流程圖,相應(yīng)的程序如下

 

CJNE  A,B,NEQ

SJMP  DONE

NEQ:JNC   AGT

XCH  A,B

AGT:JNB  Acc.7,DONE

XCH  A,B

DONE:……

  • 上一篇: 四種基本程序結(jié)構(gòu)
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1