伪指令•
1、定位伪指令
ORG m •2、定义字节伪指令
DB X1,X2,X3,…,Xn •3、字定义伪指令
DW Y1,Y2,Y3,…,Yn
4、汇编结束伪指令 END
寻址方式
MCS-51单片机有五种寻址方式: 1、寄存器寻址 3、直接寻址 5、基寄存器加变址寄存器间接寻址 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 退栈指令
2、 寄存器间接寻址 4、立即数寻址 6、相对寻址
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
逻辑或指令 位变量传送指令
MOV C,bit MOV bit,C 位变量修改指令
CLR C CLR bit CPL C
ORL A,Rn XRL ORL A,direct XRL ORL A, @Ri
ORL A,#data XRL ORL direct,A XRL ORL direct,#data XRL 逻辑异或指令 #data XRL A,Rn 位操作指令
CPL bit SETB C SETB bit
位变量逻辑与指令ANL C,bit ANL C,/bit 位变量逻辑或指令
ORL C,bit
A,direct A,@Ri A,#data direct,A direct,
ORL C,/bit
控制转移指令
无条件转移指令(4条) 1、 短跳转指令
AJMP addr11 ;先(PC)+2→PC ;addr11→PC10~0 ,(PC15~11) 2、 跳转指令
LJMP addr16 ;Addr16→PC
3、 转移指令 4、
SJMP rel ;先(PC)+2→PC;后(PC)+rel→PC 4、 寄存器加变址存器间接转移指令(散转指令) JMP @A+DPTR ;(A)+(DPTR)→PC
条件转移指令() 一、测试条件符合转移指令
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