C51汇编指令集

 
指令集:
助记符  字节数 周期数
功能说明   

1:算术操作类指令:
 
ADD A,Rn  1 1 
寄存器加到累加器 
ADD A,direct  2 2 
直接寻址字节加到累加器 
ADD A,@Ri  1 2 
间址RAM加到累加器 
ADD A,#data  2 2 
立即数加到累加器 
ADDC A,Rn  1 1 
寄存器加到累加器(带进位) 
ADDC A,direct  2 2 
直接寻址字节加到累加器(带进位) 
ADDC A,@Ri  1 2 
间址RAM加到累加器(带进位) 
ADDC A,#data  2 2 
立即数加到累加器(带进位) 
SUBB A,Rn  1 1 
累加器减去寄存器(带借位) 
SUBB A,direct  2 2 
累加器减去间接寻址RAM(带借位) 
SUBB A,@Ri  1 2 
累加器减去间址RAM(带借位) 
SUBB A,#data  2 2 
累加器减去立即数(带借位) 
INC A  1 1 
累加器加1 
INC Rn  1 1 
寄存器加1 
INC direct  2 2 
直接寻址字节加1 
INC @Ri  1 2 
间址RAM加1 
DEC A  1 1 
累加器减1 
DEC Rn  1 1 
寄存器减1 
DEC direct  2 2 
直接寻址字节减1 
DEC @Ri  1 2 
间址RAM减1 
INC DPTR  1 1 
数据地址加1 
MUL AB  1 4 
累加器和寄存器B加乘 
DIV AB  1 8 
累加器除以寄存器B 
DA A  1 1 
累加器十进制调整 



2:逻辑操作类指令:

ANL A,Rn  1 1 
寄存器“与”到累加器  
ANL A,direct  2 2 
直接寻址字节“ 与”到累加器 
ANL A,@Ri  1 2 
间址RAM“与”到累加器  
ANL A,#data  2 2 
立即数“与”到累加器  
ANL direct,A  2 2 
累加器“与”到直接寻址字节   
ANL direct,#data  3 3 
立即数“与”到直接寻址字节  
ORL A,Rn  1 1 
寄存器“或”到累加器  
ORL A,direct  2 2 
直接寻址字节“  
ORL A,@Ri  1 2 
间址RAM“或”到累加器   
ORL A,#data  2 2 
立即数“或”到累加器   
ORL direct,A  2 2 
累加器“或”到直接寻址字节   
ORL direct,#data  3 3 
立即数“或”到直接寻址字节   
XRL A,Rn  1 1 
寄存器“异或”到累加器  
XRL A,direct  2 2 
直接寻址数“异或”到累加器  
XRL A,@Ri  1 2 
间址RAM“异或”到累加器  
XRL A,#data  2 2 
立即数“异或”到累加器  
XRL direct,A  2 2 
累加器“异或”到直接寻址字节  
XRL direct,#data  3 3 
立即数“到直接寻址字节  
CLR A  1 1 
累加器清零 
CPL A  1 1 
累加器求反 
RL A  1 1 
循环循环左移 
RLC A  1 1 
经过进位位的累加器循环左移 
RR A  1 1 
累加器循环右移 
RRC A  1 1 
经过进位位的累加器循环右移 
SWAP A  1 1 
累加器内高低半字节交换 



3:数据传输类指令:
 
MOV A,Rn  1 1 
寄存器传送到累加器A 
MOV A,direct  2 2 
直接寻址字节传送到累加器 
MOV A,@Ri  1 2 
间址RAM传送到累加器 
MOV A,#data  2 2 
立即数传送到累加器 
MOV Rn,A  1 1 
累加器传送到寄存器 
MOV Rn,direct  2 2 
直接寻址字节传送到寄存器 
MOV Rn,#data  2 2 
立即数传送到寄存器 
MOV direct,A  2 2 
累加器传送到直接寻址字节 
MOV direct,Rn  2 2 
寄存器传送到直接寻址字节 
MOV direct,direct  3 3 
直接寻址字节传送到直接寻址字节 
MOV direct,@Ri  2 2 
间址RAM传送到直接寻址字节 
MOV direct,#data  3 3 
立即数传送到直接寻址字节 
MOV @Ri,A  1 2 
累加器传送到间址RAM 
MOV @Ri,direct  2 2 
直接寻址数传送到间址RAM 
MOV @Ri,#data  2 2 
立即数传送到间址RAM 
MOV DPTR,#data16  3 3 
16位常数装入数据指针 
MOVC A,@A+DPTR  1 3 
相对于DPTR的代码字节传送到累加器 
MOVC A,@A+PC  1 3 
相对于PC的代码字节传送到累加器 
MOVX A,@Ri  1 3 
外部RAM(8位地址)数传送到A 
MOVX @Ri,A  1 3 
累加器传到外部RAM(8位地址) 
MOVX A,@DPTR  1 3 
外部RAM(16位地址)传送到A 
MOVX @DPTR,A  1 3 
累加器传到外部RAM(16位地址) 
PUSH direct  2 2 
直接寻址字节压入栈顶 
POP direct  2 2 
栈顶数据弹出到直接寻址字节 
XCH A,Rn  1 1 
寄存器和累加器交换 
XCH A,direct  2 2 
直接寻址字节与累加器交换 
XCH A,@Ri  1 2 
间址RAM与累加器交换 
XCHD A,@Ri  1 2 
间址RAM和累加器交换低半字节 



4:位操作类指令 

CLR C  1 1 
清进位位 
CLR bit  2 2 
清直接寻址位 
SETB C  1 1 
进位位置1 
SETB bit  2 2 
直接寻址位置位 
CPL C  1 1 
进位位取反 
CPL bit  2 2 
直接寻址位取反 
ANL C,bit  2 2 
直接寻址位“与”到进位位  
ANL C,/bit  2 2 
直接寻址位的反码“与”到进位位   
ORL C,bit  2 2 
直接寻址位“或”到进位位   
ORL C,/bit  2 2 
直接寻址位的反码“或”到进位位   
MOV C,bit  2 2 
直接寻址位传送到进位位 
MOV bit,C  2 2 
进位位传送到直接寻址位 
JC rel  2 2/3 
若进位位为1则跳转 
JNC rel  2 2/3 
若进位位为零则跳转 
JB bit,rel  3 3/4 
若直接寻址位为1则跳转 
JNB bit,rel  3 3/4 
若直接寻址位为零则跳转 
JBC bit,rel  3 3/4 
若直接寻址位为1则跳转,并清除该位 


5:控制转移类指令:
 
ACALL addr11  2 3 
绝对调用子程序 
LCALL addr16  3 4 
长调用子程序 
RET  1 5 
从子程序返回 
RETI  1 5 
从中断返回 
AJMP addr11  2 3 
绝对转移 
LJMP addr16  3 4 
长转移 
SJMP rel  2 3 
短转移(相对偏移) 
JMP @A+DPTR  1 3 
相对DPTR的间接转移 
JZ rel  2 2/3 
累加器为0则转移 
JNZ rel  2 2/3 
累加器为非0则转移 
CJNE A,direct,rel  3 3/4 
比较直接寻址字节与A,不相等则转移 
CJNE A,#data,rel  3 3/4 
比较立即数与A,不相等则转移 
CJNE Rn,#data,rel  3 3/4 
比较立即数与寄存器,不相等则转移 
CJNE @Ri,#data,rel  3 4/5 
比较立即数与间接寻址RAM,不相等则转移 
DJNZ Rn,rel  2 2/3 
寄存器减1,不为零则转移 
DJNZ direct,rel  3 3/4 
直接寻址字节减1,不为零则转移 
NOP  1 1 
空操作 



注释:
Rn –  当前选择的寄存器区的寄存器 R0-R7。 
 
@Ri –  通过寄存器 R0-R1 间接寻址的数据 RAM 地址。 
 
rel –  相对于下一条指令第 8 位有符号(2 的补码)偏移量。SJMP和所有条
件转移指令使用。 
 
direct – 8 位内部数据存储器地址。可以是直接访问数据 RAM 地址(0x00-0x7F)或一
个 SFR 地址(0x80-0xFF)。 
 
#data – 8 位立即数 
 
#data16 – 16 位立即数 
 
bit –  数据 RAM 或 SFR 中的直接寻址位 
 
addr11 – ACALL 或 AJMP使用的 11 位目的地址。目的地址必须与下一条指令第
节处于同一个 2K字节的程序存储器页。 
 
addr16 – LCALL或 LJMP使用的 16 位目的地址。目的地址可以是 64K程序存储器空间
内的任何位置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章