第3章MCS–51单片机的指令系统.ppt
文本预览下载声明
1.无条件转移指令(4条) 无条件转移指令的功能是当程序执行完此类转移指令后,程序就无条件地转到指令所提供的目的地址去。 LJMP addr16 ;PC←addr16 AJMP addr11 ;PC←PC+2,PC10~0←addr11, ; PC15~11不变 SJMP rel ;PC←PC+2+rel JMP @A+DPTR ;PC←A+DPTR * * 第一条指令称为长转移指令。该指令为3字节指令,指令中提供16位目标地址,将指令中第二字节和第三字节地址码分别装入PC的高8位和低8位中,以实现程序的转移。所以该指令转移的目标地址范围是在整个64K字节的存储空间内。 第二条指令称为绝对转移指令。该指令为2字节指令,指令中提供11位目标地址,所以该指令转移的目标地址范围是从下条指令开始的2K字节的存储空间内,如图3-8所示。 由图3-8可见,该指令的转移地址由指令操作码的高3位和第二字节组成,可以在2K字节的存储空间内实现转移。 * 图3-8 AJMP 指令执行示意图 ? AJMP指令第一字节(操作码) 第二字节 ? A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 ? PC PC高5位 PC低11位 ? Addr 11 * 第三条指令称为相对转移指令又称为短转移指令。该指令为2字节指令,指令中的rel是一个带符号的相对偏移量,范围为-128~+127。负数表示向后转移,正数表示向前转移,该指令执行后程序转移到当前PC值与rel之和所指示的单元地址处。 第四条指令称为间接转移指令又称散转移指令。转移地址由数据地址指针DPTR与该累加器A中的8位无符号数之和形成。该指令执行后不影响DPTR和A中的原内容,也不影响任何标志位,只是把相加的结果直接送PC,以实现程序的转移。 * [例3.19] 根据data的数值设计散转表程序,当data=0时,转处理程序G0,当data=1时,转处理程序G1,… ,当data=n时,转处理程序Gn。编程如下: MOV A,#data RL A ;将A修正为偶数 MOV DPRT,#TABLE ;表首址送DPTR JMP @A+DPTR ;以A中内容为偏移量跳转TABLE:AJMP G0 AJMP G1 AJMP G2 ┇ AJMP Gn (注意:data可以是任意数,但由于AJMP是双字节指令, 所以A中的数值必须修正为偶数)。 * 2.条件转移指令(13条) 条件转移指令是依据某种特定条件实现转移的指令。条件满足时实现转移,其目标地址在下一条指令的起始地址为中心的256个字节范围内(-128~+127);条件不满足时则顺序执行下面一条指令。 条件转移指令非常丰富,包括判累加器零转移、判位状态转移、比较转移和循环转移共4组。 JZ rel ;若A=0,则转移,PC←PC+2+rel 若A≠0,则顺序执行,PC←PC+2 JNZ rel ;若A≠0,则转移,PC←PC+2+rel 若A=0,则顺序执行,PC←PC+2 * CJNE A,direct,rel ;若A=(direct),则顺序执行, PC←PC+3,C←0 若A>(direct),则转移, PC←PC+3+rel,C←0 若A<(direct),则转移, PC←PC+3+rel,C←1 CJNE A,#data,rel ;若A=data,
显示全部