68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 控制轉(zhuǎn)移指令

控制轉(zhuǎn)移指令

關(guān)鍵字:轉(zhuǎn)移 指令 作者:admin 來源:不詳 發(fā)布時間:2018-05-19  瀏覽:11

控制轉(zhuǎn)移類指令

計算機運行過程中,有時因為操作的需要,程序不能按順序逐條執(zhí)行指令,需要改變程序運行方向,即將程序跳轉(zhuǎn)到某個指定的地址再順序執(zhí)行下去。

控制轉(zhuǎn)移類指令的功能就是根據(jù)要求修改程序計數(shù)器PC的內(nèi)容,以改變程序運行方向,實現(xiàn)轉(zhuǎn)移。

控制轉(zhuǎn)移類指令可分為:無條件轉(zhuǎn)移、條件轉(zhuǎn)移、絕對轉(zhuǎn)移、相對轉(zhuǎn)移和調(diào)用、返回指令。下面我們將分類介紹。

1.無條件轉(zhuǎn)移指令(4條)

LJMP   add16           ;add16→PC,無條件跳轉(zhuǎn)到add16地址,可在64KB范圍內(nèi)

轉(zhuǎn)移,稱為長轉(zhuǎn)移指令

AJMP   add11          ;add11→PC,無條件轉(zhuǎn)向add11地址,在2KB范圍內(nèi)轉(zhuǎn)移

SJMP   rel           ;PC+2+rel→PC,相對轉(zhuǎn)移,rel是偏移量,8 位有符號

數(shù),范圍-128~127,即可向后跳轉(zhuǎn)128,向前可跳轉(zhuǎn)127

JMP    @A+DPTR         ;A+DPTR→PC ,屬散轉(zhuǎn)指令,無條件轉(zhuǎn)向A與DPTR內(nèi)容相

加后形成的新地址

例1  執(zhí)行指令

LJMP   9100H

不管這條指令存放在哪里,執(zhí)行時將使程序轉(zhuǎn)移到9100H,和AJMP,SJMP指令是有差別的。

例2  程序

2000H   MOV   R0 , #10H  ;10H→PC

2002H   SJMP  03H   ;PC+2+rel=2002H+2+03H=2007H→PC

┇        ┇

2006H     ┇

2007H     ┇

從說明中可見,執(zhí)行SJMP  03H 指令后,馬上跳轉(zhuǎn)到2007H地址執(zhí)行程序。

2.條件轉(zhuǎn)移指令(8條)

條件轉(zhuǎn)移指令是根據(jù)某種特定條件轉(zhuǎn)移的指令。條件滿足時轉(zhuǎn)移,條件不滿足時則順序

執(zhí)行下面的指令。

JZ   rel           ;A=0轉(zhuǎn)向PC+2+rel→PC,A≠0順序執(zhí)行

JNZ  rel           ;A≠轉(zhuǎn)向PC+2+rel→PC ,A=0順序執(zhí)行

CJNE A, direct, rel     ;A≠ (direct)轉(zhuǎn)向PC+3+rel→PC且當(dāng)A>(direct),Cy=0

;當(dāng)A<(direct),Cy=1

;否則A=(direct),PC+3→PC即順序執(zhí)行

CJNE A, #data, rel      ;A data P轉(zhuǎn)向PC+3+rel→PC且當(dāng)A >data,Cy=0

;當(dāng)A <data,Cy=1,

;A=data,PC+3→PC順序執(zhí)行

CJNZ  Rn, #data, rel  ;Rn≠data轉(zhuǎn)向PC+3+rel→PC

;且當(dāng)Rn>data,Cy=0,當(dāng)Rn<data,Cy=1

;Rn=data,PC+3→PC順序執(zhí)行

CJNE  @Ri,#data, rel  ;(Ri) ≠data ,PC+3+rel→PC

;且當(dāng)(Ri)>data ,Cy=0,當(dāng)(Ri)<data,Cy=1

;(Ri)=data, PC+3→PC順序執(zhí)行

DJNZ  Rn, rel       ;Rn-1→Rn ,Rn ≠0轉(zhuǎn)向PC+2+rel→PC

;Rn=0,PC+2→PC順序執(zhí)行

DJNZ direct, rel      ;(direct)-1→(direct),(direct) ≠0轉(zhuǎn)向 PC+2+rel

→PC

;(direct)=0 ,PC+2→PC順序執(zhí)行

注意:

1)CJNE類指令借用進位標(biāo)志Cy作為比較結(jié)果的標(biāo)志位。從指令中可知,目的操作數(shù)內(nèi)容小于原操作數(shù)內(nèi)容Cy置1,反之Cy清0,該類指令多用于分支程序。

2) DJNZ指令執(zhí)行時Rn或direct先減1,然后再判斷Rn或direct內(nèi)容是否等于0。不為0則轉(zhuǎn),為0順序執(zhí)行。DJNZ用在循環(huán)程序中,控制循環(huán)次數(shù)很方便。

3) JZ和JNZ的操作數(shù)只有一個,是對A的內(nèi)容的進行判斷的指令。

例1 以下程序的循環(huán)次數(shù)是多少,最后(R0)=?

MOV  R0 , #0

LL:     ┇

DJNZ  R0 , LL

分析:由于DJNZ是減1再判斷大小的,因為R0=0,所以第一次執(zhí)行DJNZ  R0 , LL后R0=FFH=255,則程序要執(zhí)行的次數(shù)為256次,R0最后的值為0。

解:程序要循環(huán)的次數(shù)為256次,最后R0=0

3.調(diào)用、返回、控操作指令

在程序設(shè)計中,常常要把具有一定功能的公用程序編制成子程序。當(dāng)主程序轉(zhuǎn)至子

程序時用調(diào)用指令,而在子程序的最后安排一條返回指令,使執(zhí)行完子程序后再返回到主程序。

(1) LCALL    addr16    ;調(diào)用入口地址為addr16的子程序

這是一條長調(diào)指令,可調(diào)用64KB范圍內(nèi)的子程序,因此,可放在程序的任何位置。

指令的執(zhí)行過程分兩步:第一步把斷點(當(dāng)前執(zhí)行指令的下一條指令地址)壓入堆棧。第二步將調(diào)用的子程序的入口地址裝入PC。即addr16(16位地址)→PC,轉(zhuǎn)向執(zhí)行子程序。

(2) ACALL    addr11      ;子程序入口地址為addr11的子程序

這是一條短調(diào)指令,只能實現(xiàn)2KB范圍內(nèi)的子程序的調(diào)用。其指令執(zhí)行過程與LCALL

指令一樣。但是需要注意的是:ACALL中addr11只占用PC的PC.0~PC.10位。

(3) RET         ;放在子程序最后,使程序準確返回到主程序斷點處

執(zhí)行過程為:(SP)→PC.8~PC.15斷點地址高字節(jié)送入PC

SP-1→SP,(SP) →PC.0~PC.7斷點低字節(jié)送入PC,

這時PC中為主程序斷點地址,程序準確返回到調(diào)用指令的下一條。

例  設(shè)SP=62H,(62H)=07H,(61H)=30H,執(zhí)行指令RET

結(jié)果:SP=60H,(PC)=0730H,CPU從0730H開始執(zhí)行程序。

(4) RETI     ;中斷返回指令

該指令用于中斷服務(wù)程序,使中斷程序結(jié)束后準確返回到主程序斷點處,執(zhí)行過程同RET,它還能清除優(yōu)先級狀態(tài)。

(5) NOP         ;空操作

執(zhí)行該指令時,CPU只進行取指令、譯碼,而不進行任何操作,故稱為控操作。常用于產(chǎn)生一個機器周期延時。

編輯:admin  最后修改時間:2018-05-19

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

曲麻莱县| 玉溪市| 富源县| 金湖县| 雅安市| 晴隆县| 墨脱县| 汉沽区| 财经| 合阳县| 云南省| 阿巴嘎旗| 南投市| 南丹县| 长丰县| 临汾市| 自贡市| 广灵县| 陇南市| 广水市| 运城市| 竹溪县| 舒兰市| 雷山县| 怀宁县| 陆良县| 拉孜县| 正镶白旗| 读书| 岳普湖县| 常山县| 巨鹿县| 潞城市| 孟村| 崇信县| 哈巴河县| 乌拉特前旗| 玉树县| 屯昌县| 呼伦贝尔市| 承德市|