新聞中心

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

        51單片機條件轉移指令

        作者: 時間:2013-01-05 來源:網絡 收藏

        是指在滿足一定條件時進行。

        判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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 米易县| 舟曲县| 信宜市| 达拉特旗| 夏河县| 荥阳市| 澎湖县| 吉安市| 阿坝县| 黔南| 二手房| 嘉善县| 分宜县| 蒙阴县| 陆河县| 江门市| 开封市| 高邮市| 松原市| 佛学| 阳高县| 武清区| 长武县| 中牟县| 天气| 安阳市| 凌海市| 隆德县| 黎川县| 青铜峡市| 梁山县| 枣强县| 宜春市| 定日县| 巴彦淖尔市| 大渡口区| 阿鲁科尔沁旗| 涪陵区| 黄平县| 游戏| 松江区|