资料介绍
单片机资料
条件转移指令是指在满足一定条件时进行相对转移。
判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。
http://www.51hei.com 希望大家常来本站学习单片机相关知识
第一条指令的功能清楚了,第二条当然就好理解了,如果A中的值不等于0,就转移。把
上面的那个例程中的JZ改成JNZ试试吧,看看程序执行的结果是什么?
比较转移指令
CJNE A,#data,rel
CJNE A,direct,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
第一条指令的功能是将A中的值和立即数data比较,如果两者相等,就次序执行(执行本
指令的下一条指令),如果不相等,就转移,同样地,我们能将rel理解成标号,即:C
JNE
A,#data,标号。这样利用这条指令,我们就能判断两数是否相等,这在很多场合是非常
有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,
如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的
。如果前面的数(A中的)大,则CY=0,不然CY=1,因此在程序转移后再次利用