久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

程序控制指令

作者:佚名   來源:本站原創   點擊數:  更新時間:2007年09月20日   【字體:

表 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

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

 

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

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

轉移條件:前數≠后數

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

 

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

CJNE  A,B,0 

JNC  DONE

EXC  A,B

DONE:……

轉載須保留地址:http://www.zg4o1577.cn/mcu/284.html

 

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

有符號數比較的算法:

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

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

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

 

CJNE  A,B,NEQ

SJMP  DONE

NEQ:JNC   AGT

XCH  A,B

AGT:JNB  Acc.7,DONE

XCH  A,B

DONE:……

關閉窗口

相關文章

主站蜘蛛池模板: 久久香蕉网 | 中文字幕一页二页 | 午夜免费福利影院 | 亚洲国产成人在线视频 | 亚洲国产视频一区二区 | 午夜欧美日韩 | 日韩在线免费观看视频 | 免费视频久久 | 亚洲bt 欧美bt 日本bt | 一区二区在线看 | 免费观看成人av | 亚洲国产精品一区二区久久 | 国产一级特黄aaa大片评分 | 欧美激情在线精品一区二区三区 | 亚洲国产黄色av | 国产高清视频在线播放 | 欧美高清视频一区 | 亚洲天天干| 偷拍自拍网 | 婷婷久久久久 | 久久久久久av | 亚洲性视频 | 日韩一区二区三区四区五区六区 | 国产精品国产三级国产aⅴ浪潮 | 亚洲国产偷 | 日韩激情视频一区 | 第一色在线| 天堂网中文字幕在线观看 | 亚洲精品一 | 精品国产欧美一区二区三区成人 | 国内精品视频在线观看 | 亚洲视频二 | 国产成人免费视频网站视频社区 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 欧美 日韩 中文 | 青青草原精品99久久精品66 | 精品入口麻豆88视频 | 色综合天天天天做夜夜夜夜做 | 一区2区| 成人亚洲视频 | 精品国产视频在线观看 |