新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 辽阳市| 分宜县| 获嘉县| 楚雄市| 汪清县| 察雅县| 孝昌县| 沿河| 商水县| 易门县| 肥城市| 祁连县| 瑞安市| 罗甸县| 靖宇县| 永康市| 新安县| 工布江达县| 海原县| 两当县| 中方县| 广德县| 新乡市| 嘉鱼县| 阳泉市| 高雄市| 安陆市| 六枝特区| 闽清县| 元氏县| 巫山县| 杭锦后旗| 凤庆县| 卢湾区| 高州市| 都安| 上犹县| 祥云县| 牟定县| 子洲县| 阿勒泰市|