<acronym id="atkaq"></acronym>
      <bdo id="atkaq"></bdo>

      天才教育網合作機構 > 培訓機構 >

      東莞電工培訓網

      歡迎您!
      朋友圈

      全國統一學習專線 9:00-21:00

      位置:培訓資訊 > 程序控制指令

      程序控制指令

      日期:2009-11-23 10:26:42     瀏覽:922    來源:東莞電工培訓網

      表 3-6 程序控制指令

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

      * 程序控制指令又分“無條件轉移”、“調用與返回”和“條件轉移”等三類。

      * 對程序控制指令應掌握:轉移地址如何生成及其轉移范圍。

      * 注意!MCS-51條件轉移指令的運用與計算并無特別的聯系。

      * 位值判別轉移使程序設計更為靈活,是MCS-51指令系統的特色。

      * 應特別注意變址轉移指令JMP與比較轉移指令CJNE的用法。

      操作碼

      操作數

      條 件

      轉 移 地 址

      說 明

      AJMP

      addr11

      無條件

      (PC)←(PC)+2

      (PC)0-10←addr11

      短轉移,只改變PC的低11位,轉移范圍2K。

      LJMP

      addr16

      無條件

      (PC)←addr16

      長轉移,轉移范圍全64K空間

      SJMP

      rel

      無條件

      (PC)←(PC)+2+rel

      相對轉移 ,范圍-126~+129。

      JMP

      @A+DPTR

      無條件

      (PC)←(A)+(DPTR)

      散轉指令,根據A值變址轉移

      ACALL

      addr11

      無條件

      (PC)←(PC)+ 2

      (PC)L、(PC)H壓棧

      (PC)0-10←addr11

      短調用,只改變PC的低11位,轉移范圍2K。

      LCALL

      addr16

      無條件

      (PC)←(PC)+ 3

      (PC)L、(PC)H壓棧

      (PC)←addr16

      長調用,調用范圍全64K空間

      RET

      隱含

      ((SP))

      無條件

      (PC)H←((SP))

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

      子程序返回。

      RETI

      中斷返回。

      JZ

      rel

      (A)= 0

      (PC)←(PC)+2+rel

      根據A的值條件轉移。

      JNZ

      (A)≠0

      JC

      rel

      (C)= 0

      (PC)←(PC)+2+rel

      根據C的值條件轉移。

      JNC

      (C)= 1

      JNB

      bit, rel

      (bit)=0

      (PC)←(PC)+3+rel

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

      JB

      (bit)=1

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

      JBC

      (bit)=1

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

      DJNZ

      Rn, rel

      (Rn)-1≠0

      (PC)←(PC)+2+rel

      循環指令。循環計數器自動

      減1,歸0則退出循環。

      dir, rel

      (dir)-1≠0

      (PC)←(PC)+3+rel

      操作碼

      操作數

      條 件

      轉 移 地 址

      說 明

      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

      無符號數比較,兩數不等則轉移。若前一數小,C置1;若前一數不小于后一數,C清零。

      NOP

      (PC)←(PC)+1

      空操作,順序執行。

      2. AJMP、LJMP及SJMP的轉移范圍

      指令

      轉移地址

      轉移范圍

      說明

      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位有符號數

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

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

      3. 變址轉移指令JMP的使用

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

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

      MOV DPTR,#GO ;設立散轉入口地址

      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,程序應如何變化?

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

      4. 條件轉移指令的使用

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

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

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

      * 如果計算溢出,轉向FL分支: JB OV,FL

      * 如果C=1,將C清零并轉向NEG分支:JBC C,NEG

      * 由P1.4檢測火災傳感器,1有效。傳感器報警時轉向FIRE分支:JB P1.4,FIRE

       

      5. 比較轉移指令CJNE及其使用

      * 格式:CJNE 前數,后數,相對偏移量

      轉移條件:前數≠后數

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

      * 應用例:A、B中為無符號數,比較兩數,大數存A,小數存B。

      CJNE A,B,0

      JNC DONE

      EXC A,B

      DONE:……

       

      * 應用例:A、B中為有符號數,比較兩數,大數存A,小數存B。

      有符號數比較的算法:

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

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

      據此可以畫出右邊的流程圖,相應的程序如下

      CJNE A,B,NEQ

      SJMP DONE

      NEQ:JNC AGT

      XCH A,B

      AGT:JNB Acc.7,DONE

      XCH A,B

      DONE:……

      如果本頁不是您要找的課程,您也可以百度查找一下:

      亚洲无碼另类精品_亚洲天堂无码高清性视频_欧美日韩一区二区综合_亚洲午夜福利理论片在线贰信

        <acronym id="atkaq"></acronym>
        <bdo id="atkaq"></bdo>

        中文字幕国内一区二区三区 | 亚洲人成在线观看网站不卡 | 亚洲国产精品久久久天堂不卡海量 | 久久精品99久久无色码中文字幕 | 人妇乱系列中文字幕 | 日韩国产欧美视频二区 |