单片机89c51指令及操作汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据传送指令
以累加器A为目的操作数的指令:MOV A,Rn (Rn)→A
MOV A,direct (direct)→A MOV A,@Ri (Ri)→A
MOV A,#data (#data)→A
以寄存器Rn为目的操作数的指令:MOV Rn,A (A)→Rn MOV Rn,direct (direct)→Rn MOV Rn,#data (#data)→Rn 以直接地址为目的操作数的指令:MOV direct,A (A)→direct MOV direct,Rn (Rn)→direct MOV direct,direct
(direct)→direct MOV direct,@Ri (Ri)→direct MOV direct,#data
(#data)→direct 以间接地址为目的操作数的指令:MOV @Ri,A (A)→Ri
MOV @Ri,direct (direct)→Ri MOV @Ri,#data (data)→Ri
16位数据传送指令:
MOV DPTR,#data16
dataH→DPH,dataL→DPL 查表指令:
MOVC A,@A+DPTR 先pc+1→pc,后A+DPTR→A,一字节
MOVC A,@A+PC 先pc+1→pc,后A+PC →A,一字节
累加器A与片外RAM传送指令:
MOVX A,@Ri Ri→A,且使
=0
MOVX A,@DPTR DPTR→A, 且使=0 MOVX @Ri,A A→Ri, 且使=0
MOVX @DPTR,A A→DPTR,
且使
=0
栈操作指令:入栈 PUSH direct 先SP+1→SP,后
direct→SP
出栈 POP direct先SP→direct,后SP-1→SP
交换指令:
1)字节交换指令
XCH A,Rn A←→Rn
XCH A,direct .
XCH A,@Ri .
2)低半字节交换指令
XCHD A,@Ri A
0~3
←→Ri
0~3
3)累加器A中高4位和低4位交换
SWAP A A
0~3
←→A
4~7
算术运算指令
加法类指令
ADD A ,# data A ←(A)+data ADD A ,direct
A ←(A)+(direct)ADD A ,Rn A ←(A)+(Rn)ADD A ,@Ri A ←(A)+((Ri))带进位加法指令
ADDC A ,# data
A ←(A)+ data +(CY)ADDC A ,direct
A ←(A)+(direct)+(CY)ADDC A ,Rn
A ←(A)+(Rn)+(CY)ADDC A ,@Ri
A ←(A)+((Ri))+(CY)带借位减法指令
SUBB A ,# data
A ←(A) - data -(CY)SUB
B A ,direct
A ←(A) -(direct)-(CY)SUB
B A ,Rn
A ←(A) –(Rn)-(CY)SUB
B A ,@Ri
A ←(A) -((Ri))-(CY)乘法指令
MUL AB BA←(A)×(B)除法指令
DIV AB A←(A)÷(B)之商,
B←(A)÷(B)之余数
加1指令
INC A A ←(A)+ 1 INC direct
direct ←(direct)+ 1 INC Rn Rn ←(Rn)+ 1 INC @Ri Ri ←((Ri))+ 1 INC DPTR DPTR ←(DPTR)+ 1 减1指令
DEC A A ←(A)-1
DEC direct direct ←(direct)-1 DEC Rn Rn ←(Rn)-1
DEC @Ri Ri ←((Ri))-1
十进制调整指令
DA A 调整累加器内容为BCD数
逻辑操作指令
累加器清零指令:
CLR A A ←0 累加器按位取反指令:
CPL A
循环左移 RL A
循环右移 RR A
带进位循环左移 RLC A
带进位循环右移 RRC A
逻辑与运算指令
ANL A ,#data A ←(A)∧data ANL A ,direct
A ←(A)∧(direct) ANL A ,Rn A ←(A)∧(Rn)
ANL A ,@Ri A ←(A)∧((Ri)) ANL direct ,A
direct ←(direct)∧(A) ANL direct ,#data
direct ←(direct)∧data
逻辑或运算指令
ORL A ,#data A ←(A)∨data ORL A ,direct
A ←(A) ∨(direct) ORL A ,Rn A ←(A) ∨(Rn) ORL A ,@Ri A ←(A) ∨((Ri))ORL direct ,A
direct ←(direct) ∨(A) ORL direct ,#data
direct ←(direct) ∨data
逻辑异或运算指令
XRL A ,#data A ←(A)data
XRL A ,direct A ←(A) ( direct) XRL A ,Rn A ←(A) (Rn) XRL A ,@Ri A ←(A) ((Ri))XRL direct ,A
direct ←(direct) (A) XRL direct ,#data
direct ←(direct) data
控制转移类指令
长转移指令 LJMP addr16
PC ← addr16 短转移指令
AJMP addr11;PC←(PC)+2,PC
10~0

addr11,PC
15~11
不变
相对转移指令
SJMP rel ;PC ←(PC) + 2,PC ←(PC) + rel
间接转移指令JMP @A+DPTR ; PC ←(A)+(DPTR)
空操作指令
NOP PC+1→PC
判零转移指令
JZ rel;
PC+2→PC当A全为0
时,PC=PC+rel,当A
不为全0时,程序顺序
执行。

JNZ rel
PC+2→PC当A不全为0
时, PC+rel→PC,当
A为全0时,程序顺序
执行。

比较条件转移指令
CJNE A ,# data ,rel
PC+3→PC;
若# data <A,则PC+rel→PC,且0→CY;
若# data >A,则PC+rel→PC,且1→CY;
若# data =A,则顺序执行,且0
→CY。

CJNE A ,direct ,rel
PC+3→PC;
若direct<A,则PC+rel→PC,且0→CY;
若direct>A,则PC+rel→PC,且1→CY;
若direct=A,则顺序执行,且0→CY。

CJNE Rn ,#data ,rel
PC+3→PC;
若#data < Rn,则PC+rel→PC,且0→CY;
若#data > Rn,则PC+rel→PC,且1→CY;
若#data = Rn,则顺序执行,且0→CY。

CJNE @Ri ,# data ,rel
PC+3→PC;
若# data < Ri,则PC+rel→PC,且0→CY;
若# data > Ri,则PC+rel→PC,且1→CY;
若# data = Ri,则顺序执行,且0→CY。

循环转移指令
DJNZ Rn ,rel
PC+2→PC,Rn-1→Rn;
当Rn≠0时,则PC+rel→PC;
当Rn=0时,则结束循环,程序往下执行。

DJNZ direct ,rel
PC+3→PC, direct -1→direct;
当direct≠0时,则PC+rel→PC;
当direct =0时,则结束循环,程序往下执行。

长调用指令
LCALL addr16
PC+3→PC
SP+1→SP
PC
7~0→SP
SP+1→SP
PC
15~8
→SP
addr
15~0
→PC
返回指令
RET SP→PC
15~8
,弹出断点高8位
SP-1→SP
SP→PC
7~0
,弹出断点低8位
SP-1→SP
RETI SP→PC
15~8,
,SP-1→SP
SP→PC
7~0
,SP-1→SP
位操作类指令
1、位数据传送指令
MOV C , bit CY←(bit)
MOV bit , C bit←(CY)
2、位修正指令
1)位请0指令
CLR C CY← 0
CLR bit bit ← 0
2)位置1指令
SETB C CY← 1
SETB bit bit ← 1
3)位取反指令
CPL C C←
CPL bit bit ←
位逻辑“与”运算指令(斜杠“/”表
示将该位值取出后,先求反、再参加
运算,不改变位地址中原来的值。


ANL C ,bit CY←(CY)∧(bit)
ANL C ,/bit CY←(CY)∧()
位逻辑“或”运算指令
ORL C ,bit CY←(CY)∨(bit)
ORL C ,/bit CY←(CY)∨()
判布尔累加器C转移指令
JC rel
PC+2→PC;
若C=1,则PC+rel→PC;
若C=0,则顺序往下执行。

JNC rel
PC+2→PC;
若C=0,则PC+rel→PC;
若C=1,则顺序往下执行。

判位变量转移指令
JB bit ,rel
PC+3→PC;
若bit =1,则PC+rel→PC;
若bit =0,则顺序往下执行。

JNB bit ,rel
PC+3→PC;
若bit =0,则PC+rel→PC;
若bit =1,则顺序往下执行。

JBC bit ,rel
PC+3→PC;
若bit =1,则PC+rel→PC,0→bit
若bit =0,则顺序往下执行。

相关文档
最新文档