新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機教程:單片機條件轉移指令

        51單片機教程:單片機條件轉移指令

        作者: 時間:2012-07-10 來源:網絡 收藏

        是指在滿足一定時進行相對

        本文引用地址:http://www.104case.com/article/171173.htm

        判A內容是否為0

        JZ rel

        JNZ rel

        第一的功能是:如果(A)=0,則轉移,不然次序執行(執行本指令的下一條指令)。轉移到什么地方去呢?如果按照傳統的辦法,就要算偏移量,很麻煩,好在現在我們能借助于機器匯編了。因此這第指令我們能這樣理解:JZ 標號。即轉移到標號處。下面舉一例說明:

        MOV A,R0

        JZ L1

        MOV R1,#00H

        AJMP L2

        L1: MOV R1,#0FFH

        L2: SJMP L2

        END

        在執行上面這段程序前如果R0中的值是0的話,就轉移到L1執行,因此最終的執行結果是R1中的值為0FFH。而如果R0中的值不等于0,則次序執行,也就是執行 MOV R1,#00H指令。最終的執行結果是R1中的值等于0。

        第一條指令的功能清楚了,第二條當然就好理解了,如果A中的值不等于0,就轉移。把上面的那個例程中的JZ改成JNZ試試吧,看看程序執行的結果是什么?

        比較轉移指令

        CJNE A,#data,rel

        CJNE A,direct,rel

        CJNE Rn,#data,rel

        CJNE @Ri,#data,rel

        第一條指令的功能是將A中的值和立即數data比較,如果兩者相等,就次序執行(執行本指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNE A,#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。但有時還想得知兩數比較之后哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則CPU還會反映出哪個數大,哪個數小,這是用CY(進位位)來實現的。如果前面的數(A中的)大,則CY=0,不然CY=1,因此在程序轉移后再次利用CY就可判斷出A中的數比data大還是小了。

        例:

        MOV A,R0

        CJNE A,#10H,L1

        MOV R1,#0FFH

        AJMP L3

        L1: JC L2

        MOV R1,#0AAH

        AJMP L3

        L2: MOV R1,#0FFH

        L3: SJMP L3

        上面的程序中有一條指令我們還沒學過,即JC,這條指令的原型是JC rel,作用和上面的JZ類似,但是它是判CY是0,還是1進行轉移,如果CY=1,則轉移到JC后面的標號處執行,如果CY=0則次序執行(執行它的下面一條指令)。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 栖霞市| 库伦旗| 宣威市| 许昌县| 定陶县| 竹山县| 南乐县| 临潭县| 浦县| 大庆市| 中山市| 三明市| 丰城市| 古蔺县| 彩票| 淳安县| 克东县| 如皋市| 伊金霍洛旗| 和顺县| 广德县| 新泰市| 当阳市| 凭祥市| 左云县| 东兴市| 梁河县| 九龙城区| 康定县| 开阳县| 牟定县| 双桥区| 客服| 长兴县| 霍州市| 黔江区| 社会| 兴安县| 江口县| 葫芦岛市| 南阳市|