汇编语言指令表文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]
伪指令
1、定位伪指令
ORG m
2、定义字节伪指令
DB X1,X2,X3, (X)
3、字定义伪指令
DW Y1,Y2,Y3,…,Yn
4、汇编结束伪指令
END
寻址方式
MCS-51单片机有五种寻址方式:
1、寄存器寻址
2、寄存器间接寻址
3、直接寻址
4、立即数寻址
5、基寄存器加变址寄存器间接寻址
6、相对寻址
7、位寻址
数据传送指令
一、以累加器A为目的操作数的指令(4条)
MOV A,Rn ;(Rn)→A n=0~7
MOV A,direct ;( direct )→A
MOV A,@Ri ;((Ri))→A i=0~1
MOV A,#data ; data →A
二、以Rn为目的操作数的指令(3条)
MOV Rn ,A;(A)→ Rn
MOV Rn ,direct;( direct )→ Rn
MOV Rn ,#data; data → Rn
三、以直接寻址的单元为目的操作数的指令(5条)
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
四、以寄存器间接寻址的单元为目的操作数的指令(3条)
MOV @Ri,A;(A)→(Ri)
MOV @Ri,direct;(direct)→(Ri)
MOV @Ri,#data; data→(Ri)
五、十六位数据传送指令(1条)
MOV DPTR,#data16;dataH→DPH,dataL →DPL
六、堆栈操作指令
进栈指令
PUSH direct ;(SP)+1 →SP ,(direct)→ SP 退栈指令
POP direct
七、字节交换指令(5条)
XCH A,Rn ;(A)→(Rn)
XCH A,direct ;(A)→(direct)
XCH A,@Ri ;(A)→((Ri))
八、半字节交换指令
XCHD A,@Ri ;(A)0~3→((Ri))0~3
九、加器A与外部数据存贮器传送指令(4条)
MOVX A,@DPTR ;((DPTR))→A
MOVX A,@ Ri ;((Ri))→A i=0,1
MOVX @ DPTR ,A ;(A)→( DPTR)
MOVX @ Ri , A ;(A)→(Ri) i=0,1
十、查表指令
(i)MOVC A ,@ A+PC ;((A)+(PC))→A (ii)MOVC A , @A+ DPTR ;((A)+(DPTR))
算术运算指令
一、不带进位的加法指令(4条)
ADD A,Rn ;(A)+(Rn)→A
ADD A,direct ;(A)+(direct)→A
ADD A,@Ri ;(A)+((Ri))→A
ADD A,#data ;(A)+#data→A
二、带进位加法指令(4条)
ADDC A,Rn ;(A)+(Rn)+CY→A
ADDC A,direct ;(A)+(direct) +CY →A
ADDC A,@Ri ;(A)+((Ri)) +CY →A
ADDC A,#data ;(A)+ #data +CY →A
三、增量指令(5条)
INC A ;(A)+1 →A
INC Rn ;(Rn)+1 → Rn
INC direct ;(direct)+1 → direct
INC @Ri ;((Ri))+1 →(Ri)
INC DPTR ;(DPTR)+1 →DPTR
四、十进制调整指令(1条)
DA A
减法指令
一、带进位减法指令
SUBB A,Rn
SUBB A,direct
SUBB A,@Ri
SUBB A,#data
二、减1指令(4条)
DEC A
DEC Rn
DEC direct
DEC @Ri
乘法指令
MUL AB
除法指令
DIV AB
逻辑运算指令累加器A的逻辑操作指令
一、累加器A清0
CLR A
二、累加器A取反
CPL A
三、左环移指令
RL A
四、带进位左环移指令
RLC A
五、右环移指令
RR A
六、带进位右环移指令
RRC A
七、累加器ACC半字节交换指令
SWAP A
两个操作数的逻辑操作指令
逻辑与指令
ANL A,Rn
ANL A,direct
ANL A, @Ri
ANL A,#data
ANL direct ,A
ANL direct,#data
逻辑或指令
ORL A,Rn
ORL A,direct
ORL A,
@Ri
ORL A,
#data
ORL
direct,A
ORL
direct,#data
逻辑异或指
令
XRL A,Rn
XRL A,
direct
XRL A,
@Ri
XRL A,#data
XRL
direct,A
XRL
direct,#data
位操作指令位变量传送指令
MOV C,bit
MOV bit,C
位变量修改指令
CLR C
CLR bit
CPL C
CPL bit
SETB C
SETB bit
位变量逻辑与指令ANL C,bit
ANL C,/bit
位变量逻辑或指令
ORL C,bit
ORL C,/bit控制转移指令
无条件转移指令(4条)
1、短跳转指令
AJMP addr11 ;先(PC)+2→PC ;addr11→PC10~0 ,(PC15~11)
2、跳转指令
LJMP addr16 ;Addr16→PC
3、转移指令
SJMP rel ;先(PC)+2→PC;后(PC)+rel→PC
4、寄存器加变址存器间接转移指令(散转指令)
JMP @A+DPTR ;(A)+(DPTR)→PC
条件转移指令(8条)
一、测试条件符合转移指令
JZ rel ;当A=0 时,(PC)+rel→(PC)转移;当A≠0时,顺序执行。
JNZ rel ;当A≠0 时,(PC)+rel→(PC)转移;当A=0时,顺序执行。
JC rel 如果进位标志CY为1,则执行转移;
JNC rel 如果进位标志CY为0,则执行转移;
JB bit, rel 如果直接寻址位的值为1,则执行转移;
JNB bit , rel 如果直接寻址位的值为0,则执行转移;
JBC bit , rel 如果直接寻址位的值为1,则执行转移;然后清“0”直接寻址位(bit)。
二、比较不相等转移指令
CJNE (目的操作数),(源操作数),rel
CJNE A,direct,rel
CJNE A,#data,rel CJNE Rn,#data,rel
;若(Rn) >#data ,则(PC)+rel→PC,且0→CY;
;若(Rn) < #data ,则(PC)+rel→PC,且1→CY;
;若(Rn) = #data ,则顺序执行,且0→CY。
三、减1不为0转移指令
DJNZ Rn,rel ;(Rn)-1→Rn;
;若(Rn)≠0,则(PC)+rel →PC;
;若(Rn) = 0,则结束循环,顺序执行
DJNZ direct,rel ;(direct )-1→ direct ;
;若(direct)≠0,则(PC)+rel →PC;
;若(direct) = 0,则结束循环,顺序执行
调用和返回指令
一、短调用指令
ACALL addr11 ;(PC)+2→PC
;(SP)+1→SP,(PC 0~7)→(SP)
;(SP)+1→SP,(PC 8~15)→(SP)
;addr0~10→PC0~10,(PC11~15)不变二、长调用指令
LCALL addr16;(PC)+3→PC
;(SP)+1→SP,(PC 0~7)→(SP)
;(SP)+1→SP,(PC 8~15)→(SP)
;addr0~15→PC
三、返回指令
1. 从子程序返回指令
RET;((SP)) →PC 8~15,(SP) -1→SP
;((SP)) →PC 0~7 ,(SP) -1→SP
2. 中断服务程序返回指令
RETI;((SP)) →PC 8~15, (SP) -1→SP
; ((SP)) →PC 0~7 , (SP) -1→SP ;开放中断逻辑
四、空操作指令
NOP。