跟电师傅学单片机(17):单片机控制转移指令图文讲解2
上节介绍了单片机无条件转移指令 (4条),本节继续讲解单片机控制转移类指令。
下面介绍有条件转移指令 (8条):指令先判断后转移
有条件转移指令,也称为条件转移指令:是指令要满足一定条件才转移。满足条件时,程序转移到程序计数器PC当前值和指令给出的相对地址 rel偏移量相加后得到新的PC地址处执行;当条件不满足时,程序就顺序执行下一条指令。
条件转移指令共同特点:都是单片机相对转移指令,都有偏移量rel,都是相对转移 ,转移范围较小。
注意:
rel偏移量范围:-128~+127字节内,即范围是256个单元。
因此条件转移指令的转移范围较小,如果要实现64K范围内的转移,可以用前面学习的长转移指令:LJMP addr16来实现。
指令判断转移示意图
一:累加器A判0转移指令(2条)
累加器A判0转移指令表
PC:是单片机程序计数器,程序从哪里执行,完全由程序计数器PC里的内容决定,始终是指定下一条将要执行指令的地址(是16位地址),单片机系统上电或复位时,PC的初始值为0000H。
PC⇐PC+rel;程序计数器PC中下一条指令的地址加1个偏移量(rel)构成一个新的地址再送到PC(新的PC地址),程序正常情况是接着执行下一条指令,但在这里因为改变了PC值,执行完这条指令后就转移到新的PC地址处执行 。
凡是转移指令,都是通过改变程序计数器PC值来实现指令转移功能。
JZ rel;
指令功能:累加器A=0 PC⇐PC+rel ;累加器A中的内容全为0,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
累加器A≠0 或 累加器A=1;程序顺序执行。
JNZ rel;
指令功能:累加器A≠0或累加器A=1 PC⇐PC+rel ;累加器A中的内容不全为0,则程序转移到PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
累加器A=0;程序顺序执行。
上面两条指令产生的转移条件分别是累加器A的内容为0和不为0 。
注意:
在程序执行过程中,不改变累加器A中的内容 ,不影响单片机标志寄存器PSW中任何标志位。
二:减1非0转移指令(2条)
减1非0转移指令表
DJNZ Rn,rel;
指令功能:将寄存器Rn中的内容减1后,如果单片机寄存器Rn≠0,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
DJNZ direct,rel;
指令功能:将直接地址direct中的内容减1后,如果direct≠0,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
三:比较转移指令(4条)
比较转移指令表
CJNE A,#data,rel;
指令功能:将单片机累加器A中的内容与立即数data比较,如果不相等:A ≠ #data,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
CJNE Rn,#data,rel;
指令功能:将单片机寄存器Rn中的内容与立即数data比较,如果不相等:Rn ≠ #data,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
CJNE @Ri,#data,rel; Ri=R0 R1
指令功能:找到单片机寄存器Ri中存放的地址,根据这个地址找到里面的内容与立即数data比较,如果不相等:(Ri)≠#data,则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
CJNE A,direct,rel;
指令功能:将单片机累加器A中的内容与直接地址direct里面的内容比较,如果不相等:A≠(direct),则程序转移到程序计数器PC当前值和指令给出的rel偏移量相加后得到新的PC地址处执行。
跟电师傅学单片机(12):单片机算术运算加减法指令图文新解
单片机算术运算类指令(24条)
算术运算指令是8位二进制数进行加、减、乘、除四则运算,以及加1、减1、十进制调整等。
本节介绍其中加减法12条指令。
加减法指令示意图
1:不带进位加法指令(4条)
ADD:不带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。
ADD A,Rn;属于寄存器寻址方式。指令功能是将寄存器Rn中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,direct;属于直接寻址方式。指令功能是将直接地址direct中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,@Rn;属于寄存器间接寻址方式。指令功能是将寄存器间接寻址单元中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,#data;属于立即数寻址方式。指令功能是将立即数data与累加器A中的内容相加,其结果送回A中。
2:带进位加法指令(4条)
ADDC:带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。与ADD指令类似,不同之处是在执行加法时,还要将进位标志CY的内容一起加进去。
进位加法计算
标志寄存器PSW示意图
标志寄存器PSW功能图
CY:是标志寄存器PSW中的一个进位标志位。标志寄存器PSW也称程序状态字PSW,用于存放程序运行状态信息。
单片机系统上电或复位时,PSW初始值为00H。
3:减法指令(4条)
SUBB:带借位减法指令,与带进位加法指令类似,指令功能是把累加器A中的内容减去源操作数所确定单元中的内容和进位标志CY,其结果送回A中。
注意:在减法指令里面,只有带借位的减法,没有不带借位的减法,做减法运算时,如果是低8位时,必须把CY清零。
相关问答
单片机 所有指令的英文全称哪位大虾能告诉小弟 单片机 系统的所...[最佳回答]MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等.这里先介绍指令助记符及其相关符号的记忆方法.一、...
51 单片机 寻址方式的特色?1.51单片机的寻址方式具有特色。2.这是因为51单片机采用的是8位寻址方式,即通过8位地址来访问内部的存储单元。相比于其他寻址方式,8位寻址方式在编程和操作...
电阻并联是否可以增大功率而阻值不变?对于这个问题我来谈谈我的看法,电阻是电路中十分常见的元件,几乎所有的电子电路板都会见到电阻这个元件,据不完全统计电阻在电子电路板中所占电子电路板总元件...