首页 > 应用 > 单片机应用
[导读] 条件转移指令是指在满足一定条件时进行相对转移。

 条件转移指令是指在满足一定条件时进行相对转移。

本文引用地址: http://www.21ic.com/app/mcu/201710/741454.htm

(1)比较转移指令
CJNEA,#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大还是小了。
(2)举例:
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则次序执行(执行它的下面一条指令)。
分析一下上面的程序,如果(A)=10H,则次序执行,即R1=0。如果(A)不等于10H,则转到L1处继续执行,在L1处,再次进行判断,如果(A)>10H,则CY=1,将次序执行,即执行MOV R1,#0AAH指令,而如果(A)<10H,则将转移到L2处指行,即执行MOV R1,#0FFH指令。因此最终结果是:本程序执行前,如果(R0)=10H,则(R1)=00H,如果(R0)>10H,则(R1)=0AAH,如果(R0)<10H,则(R1)=0FFH。
弄懂了这条指令,其它的几条就类似了,第二条是把A当中的值和直接地址中的值比较,第三条则是将直接地址中的值和立即数比较,第四条是将间址寻址得到的数和立即数比较,这里就不详谈了,下面给出几个对应的例程。
CJNE A,10H ;把A中的值和10H中的值比较(注意和上题的区别)
CJNE 10H,#35H ;把10H中的值和35H中的值比较
CJNE @R0,#35H ;把R0中的值作为地址,从此地址中取数并和35H比较

换一批

延伸阅读

[图酷] FZ MCU51-B 51单片机开发板

FZ MCU51-B 51单片机开发板

FZ-MCU51单片机开发板集实验开发、编程、仿真和下载于一体,支持AT89S51、AT89S52、AT89S53的和STC系列单片机如STC89C53RC等全系列单片机的编程和实验,使用配套的仿真模......

关键字:

[新鲜事] 日本空管险酿下弥天大错!东航差点撞上全日空客机

日本空管险酿下弥天大错!东航差点撞上全日空客机

空管肩负着在地面上以及空中调度飞机的责任,稍不留神,就有可能引发惨烈的事故。......

关键字:日本空管 东航 全日空客机

[破谣言] 预知还是幻觉?人类是否拥有“第六感”

预知还是幻觉?人类是否拥有“第六感”

目前,有一个学科在专门研究第六感,这就是通灵学,这门学科是1930年由美国杜克大学的路易莎雷内斯(LouisaRhine)所建立,她不仅使人们对超感觉认知(ESP)现象有了更形象化的认知,还将心理学家卡尔齐纳(KarlZener)发明的齐纳......

关键字:第六感

[新鲜事] 世界首富遛狗,都和我们不一样!

世界首富遛狗,都和我们不一样!

今日世界首富杰夫·贝索斯(亚马逊CEO),以“遛狗”的方式开启了亚马逊年度MARS年度机器人大会。......

关键字:贝索斯 SpotMini 机器狗
条评论

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客