无条件转移指令是对转移不设置任何的条件。1)长转移指令LJMP:LJMP指令的转移范围0000H~FFFFH可达24KB。2)绝对转移指令AJMP:AJMP指令的转移范围000H~7FFH最大转移范围为2KB。3)短转移指令SJMP:SJMP指令的转移范围256B。这两种转移指令的区别是可转移的范围不同。指令“SJMP $”使程序原地踏步。......
2023-11-07
无条件转移指令共有以下4条:
1.LJMP addr16(无条件长转移)
LJMP addr16指令是3个字节指令,其机器码为02H,addr15~8,addr7~0。该指令执行时,将指令的机器码中的第2、3字节地址码分别装入程序计数器(PC)的高8位和低8位中,程序无条件地转移到指定的目标地址去执行。由于LJMP指令提供的是16位地址,因此指令可以转向64KB的ROM地址空间的任何单元。
例如,若标号“TABP”表示转移目标地址1234H,该目标地址是指向程序存储器1234H的单元。执行指令LJMP TABP时,转移的目标地址将装入程序计数器(PC)中,使程序立即无条件转向目标地址1234H处运行。
2.AJMP addr11(无条件绝对转移)
AJMP addr11指令为2个字节指令,其机器码为
即指令提供的11位地址addr10~0(A10~A0)中,其中A7~A0占第2字节,A10~A8占第1字节的高3位,低5位指令操作码。
AJMP指令的功能是构造程序转移的目标地址,实现程序的转移。但应注意的是,被替换的PC值是本条AJMP指令地址加2以后的PC值,即下一条指令的PC值。其构造方法是以指令提供的11位地址替换PC的低11位内容,高5位不变,形成新的PC值,此即程序的目标地址。因此,AJMP只能在2KB范围内跳转,即转入的存储单元地址的高5位地址编码与程序计数器(PC)当前值地址高5位必须相同,否则会出现跨页错误。64KB的程序空间划分为32个连续的2KB的空间,每2KB空间称为1页。
【例3-16】设某程序中有指令AJMP NEXT,该指令所在的地址为3456H,已知这条指令的机器码为0C188H,则目标地址NEXT是多少?
【解】(1)首先(PC)+2=3456H+2=3458H,
(PC)←(PC)+2,(PC)=3458H,则PC=0011 0100 0101 1000B。
(2)机器码0C188H=1100 0001 1000 1000B,将下划线的11位地址取出,即
A10~A0=110 1000 1000B。
(3)NEXT的地址为0011 0110 1000 1000B=3688H,也就是说,执行该指令后,程序转移到程序存储器的3688H地址处去执行了。(www.chuimin.cn)
3.SJMP rel(无条件短转移)
SJMP rel指令是相对寻址方式转移指令,其中rel为偏移量,偏移量rel是一个带符号的8位二进制补码数。该指令目标地址的计算公式为(PC)+2+rel。其中PC的内容是该转移指令所在的指令地址,即该指令可以使程序在该指令之后的第一个字节开始的前128字节到后127字节范围内作无条件的转移。
【例3-17】设某程序中有指令SJMP TABP,该指令地址为0100H,若标号“TABP”表示转移目标地址0123H,则转移的偏移量为多少?
【解】rel=0123H-(0100H+2)=21H。
重要提示:实际使用SJMP指令时,在大多数情况下不采用SJMP rel形式,而是采用SJMP<标号>的形式。前面叙述中已提到,标号就是地址的符号化,因此偏移量的计算均由单片机自动完成。
【例3-18】试分析如下转移指令的功能:
【解】程序在该条指令处原地址无限循环(原地踏步),该功能指令有时也可以写成SJMP 的形式。
4.JMP @A+DPTR(无条件间接转移)
JMP @A+DPTR指令为一字节无条件转移指令,转移的地址由累加器A的内容和数据指针DPTR的内容之和来决定,两者都是无符号数。一般是以DPTR的内容为基址的,而由A的值作为变址来决定具体的转移地址。这条指令的特点是转移地址可以在程序运行中加以改变。例如,当DPTR为确定的值时,根据A值的不同来控制程序转向不同的程序段,实现多分支程序转移。因此,有时也称其为散转指令。
例如,若已知(A)=10H,(DPTR)=2000H,执行指令
后结果为:(PC)=2010H。
4条无条件转移指令的功能相同,不同之处在于转移的范围。其中长转移指令LJMP的转移范围最大,为64KB。绝对转移指令AJMP的转移范围为2KB。短转移指令SJMP的转移范围最小,仅为256字节。变址转移指令JMP的转移范围为64KB。但需要注意的是,程序转移都是在程序存储器地址空间范围内进行的。
有关单片机基础及应用的文章
无条件转移指令是对转移不设置任何的条件。1)长转移指令LJMP:LJMP指令的转移范围0000H~FFFFH可达24KB。2)绝对转移指令AJMP:AJMP指令的转移范围000H~7FFH最大转移范围为2KB。3)短转移指令SJMP:SJMP指令的转移范围256B。这两种转移指令的区别是可转移的范围不同。指令“SJMP $”使程序原地踏步。......
2023-11-07
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
2)数据传送指令,加1、减1指令,逻辑运算指令不影响CY、OV和AC位。标志位的状态是控制转移类指令的判断条件。数据传送类指令是使用最频繁的指令,主要用于数据的复制、保存及交换。数据传送类指令的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。其通用数据传送类指令格式为MOV 目的操作数,源操作数表3-2数据传送类指令注:√表示该指令影响某一标志位。外部RAM或I/O口之间的数据传送指令共有4条。......
2023-11-17
伪指令是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。在汇编时伪指令自身不产生机器码,不属于指令系统。常用的伪指令有以下几种。1.汇编起始地址命令ORG该命令总是出现在源程序的开头位置,用于规定目标程序的起始地址。在END之后所写的指令,汇编程序不再处理。一个源程序只能有一个END指令,并放在所有指令的最后。例如:以上指令经汇编后,将对1000H开始的若干内存单元赋值。......
2023-11-17
MCS-51的所有指令均不超过3个字节,且多为单字节指令。为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。......
2023-11-17
条件转移指令是对程序转移设置转移条件。执行条件转移指令时,若满足指令中规定的条件则程序转移,若不满足指令中规定的转移条件则程序按地址顺序逐条执行。不同的是所用数值比较条件转移指令不同,密码也可以不同。程序中用了“JNB Pm.n,REL”某口输入位状态判0条件控制转移指令。以累加位C的状态为条件的转移指令共有2条。......
2023-11-07
例如,MCS51系列单片机指令集中,一条指令用二进制表示为0111 1000 0110 1110B。例如4.指令类型MCS51系列单片机指令集共有111条指令,其中数据传送类指令29条,算术运算类指令24条,逻辑运算类指令24条控制转移类指令17条布尔位运算类指令17条。......
2023-11-07
相关推荐