指令名称:长转移指令
指令代码:02H
指令功能:使程序按指定地址进行无条件转移
操作内容:PC←addrl6
字节数: 3
机器周期:2
说明:
addr16——LCALL或LJMP使用的16位目的地址。目的地址可以是64K程序存储器空间内的任何位置。
指令名称:绝对转移指令
指令代码:
A10 |
A9 |
A8 |
1 |
0 |
0 |
0 |
1 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。
操作内容:PC←(PC)+2
PCl0~0←addr11
字节数: 2
机器周期:2
使用说明:由于addr11的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。
说明:
addr11——ACALL或AJMP使用的11位目的地址。目的地址必须与下一条指令第一字节处于同一个2K字节的存储器页。
指令名称:短转移指令
指令代码:80H
指令功能:按指令提供的偏移量计算转移的目的地址,实现程序的无条件相对转移;
操作内容:PC←(PC)+2
PC←(PC)+rel
字节数: 2
机器周期:2
使用说明:偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC一126)一(PC+129)。其中PC值为本指令的地址。
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:无条件间接转移指令
指令代码:72H
指令功能:A内容与DPTR内容相加作为转移目的地址,进行程序转移。
操作内容:PC←(A)+(DPTR)
字节数: 1
机器周期;2
说明:
DPTR——是一个16位的数据指针寄存器,可以用来存放片内ROM的地址,也可以用来存放片外RAM和片外ROM的地址。
指令名称:判0转移指令
指令代码:60H
指令功能:累加位(A)的内容为o,则程序转移;否则程序顺序执行。
操作内容:若(A)=0,则PC←(PC)+2+rel
若(A)≠0,则PC←(PC)+2
字节数: 2
机器周期:2
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:判0转移指令
指令代码:70H
指令功能:累加位(A)的内容不为0,则程序转移;否则程序顺序执行。
操作内容:若(A)≠0,则PC←(PC)+2+rel
若(A)=0,则PC←(PC)+2
字节数: 2
机器周期:2
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:数值比较转移指令
指令代码:B4H
指令功能:累加器内容与立即数比较,不等则转移。
操作内容:若(A)=data,则PC←(PC)+3,C←0
若(A)>data,则PC←(PC)+3+rel,C←0
指令名称:数值比较转移指令
指令代码:B5H
指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。
操作内容:若(A)=(direct),则PC←(PC)+3,C←0
若(A)>(direct),则PC←(PC)+3+rel,C←0
若(A)<(direct),则PC←(PC)+3+rel,C←1
字节数: 3
机器周期:2
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
direct——8位内部数据存储器地址。可以直接访问数据RAM地址(0x00—0x7F)或一
个SFR地址(0x80—0xFF)。
例:
若(A)<data,则PC←(PC)+3+rel,C←1
说明:
字节数: 3
机器周期:2
说明:
单片机先把累加器A和立即数data进行比较,若累加器A中内容和立即数data相等,则程序不发生转移,继续执行程序,Cy=0。若累加器A中的内容和立即数不相等则机器便根据累加器A和立即数#data大小形成Cy标志位状态,然后使程序发生转移。
#data——8位立即数。
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:数值比较转移指令
指令代码:B8H~BFH
指令功能:寄存器内容与立即数比较,不等则转移。
操作内容:若(Rn)=data,则PC←(PC)+3,C←0
若(Rn)>data,则PC←(PC)+3+rel,C←0
若(Rn)<data,则PC←(PC)+3+rel,C←1
字节数: 3
机器周期:2
说明:
单片机先把寄存器Rn和立即数data进行比较,若寄存器Rn中内容和立即数data相等,则程序不发生转移,继续执行程序,Cy=0。若寄存器Rn中的内容和立即数不相等则机器便根据寄存器Rn和立即数#data大小形成Cy标志位状态,然后使程序发生转移。
#data——8位立即数。
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:数值比较转移指令
指令代码:B6H~B7H
指令功能:内部RAM低128单元内容与立即数比较,不等则转移。
操作内容:若((Ri))=data,则PC←(PC)+3,C←0
若((Ri))>data,则PC←(PC)+3+rel,C←0
若((Ri))<data,则PC←(PC)+3+rel,C←1
单片机先把以寄存器@Ri中地址数据中的数和立即数data进行比较,若寄存器Rn中内容和立即数data相等,则程序不发生转移,继续执行程序,Cy=0。若寄存器Rn中的内容和立即数不相等则机器便根据寄存器Rn和立即数#data大小形成Cy标志位状态,然后使程序发生转移。
字节数: 3
机器周期:2
说明:
@Ri——通过寄存器R0—R1间接寻址地数据RAM地址。
#data——8位立即数。
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
指令名称:寄存器减1条件转移指令
指令代码:D8H~DFH
指令功能:寄存器内容减1。不为0转移;为0顺序执行。
操作内容:Rn←(Rn)-l,n=0~7
若(Rn)≠0,则PC←(PC)+2+rel
若(Rn)=0,则PC←(PC)+2
说明:
单片机执行时先把Rn中的内容减1,再判断Rn中的内容是否为0,若它不为0,则程序发生转移;若为0,则程序不转移,继续执行。
字节数: 2
机器周期:2
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
Rn——当前选择的寄存器区的寄存器R0—R7。
指令名称:直接寻址单元减1条件转移指令
指令代码:D5H
指令功能:内部RAM低128单元内容减1。不为0转移;为0顺序执行。
操作内容:direct←(direct)-1
若(direct)≠0,则转到PC←(PC)+3+rel
若(direct)=0,则顺序执行(PC←(PC)+3)
说明:
单片机执行时先把direct中的内容减1,再判断direct中的内容是否为0,若它不为0,则程序发生转移;若为0,则程序不转移,继续执行。
字节数: 3
机器周期:2
说明:
rel——相对于下一条指令第一个字节的8位有符号(2的补码)偏移量。SJMP和所有条件转移指令使用。
direct——8位内部数据存储器地址。可以直接访问数据RAM地址(0x00—0x7F)或一个SFR地址(0x80—0xFF)。
指令名称:绝对调用指令
指令代码:
A10 |
A9 |
A8 |
1 |
0 |
0 |
0 |
1 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0),
取代PC的低11位,PC的高5位不变。
操作内容:
PC←(PC)+2
SP←(SP)+1
(SP)←(PC)7~0
SP←(SP)+1
(SP)←(PC)15~8
PC10~0←addrl0~0
字节数: 2
机器周期:2
使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
说明:
addr11——ACALL或AJMP使用的11位目的地址。目的地址必须与下一条指令第一字节处于同一个2K字节的存储器页。
指令名称:长调用指令
指令代码:12H
指令功能:按指令给定地址进行子程序调用
操作内容:PC←(PC)+3
SP←(SP)+1
(SP)←(PC)7~0
SP←(SP)+1
(SP)←(PC)15~8
PC←addrl6
字节数: 3
机器周期:2
使用说明:在64KB的范围内调用子程序
说明:
addr16——LCALL或LJMP使用的16位目的地址。目的地址可以是64K程序存储器空间内的任何位置。
指令名称:子程序返回指令
指令代码:22H
指令功能:子程序返回
操作内容:PC15~8←((SP))
SP←(SP)-1
PC7~0←((SP))
SP←(SP)-1
字节数: 1
机器周期:2
指令名称:中断返回指令
指令代码:32H
指令功能:中断服务程序返回
操作内容’:PC15?/FONT>8←((SP))
SP←(SP)-l
PC7~0←((SP))
SP←(SP)-1
字节数: 1
机器周期:2
指令名称:空操作指令
指令代码;00H
指令功能:不执行任何操作,常用于产生一个机器周期的时间延迟。
操作内容:PC←(PC)+l
字节数: 1
机器周期:1