各类命令助记符
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51的基本指令共111条;按功能分为5类:
(1)数据传送(29条)(2)算术操作(24条)
(3)逻辑操作(24条)(4)控制转移(17条)
(5)布尔变量操作(17条)
按指令所占的字节来分:(1) 单字节指令49条;
(2) 双字节指令46条;(3) 三字节指令16条。
数据传送指令(29条)
按指令的执行时间来分:(1) 1个机器周期(12个时钟振荡周期)指令64条;(2) 2个机器周期(24个时钟振荡周期)指令45条;
(3) 只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。12MHz晶振:机器周期为1μs。
向累加器A的传送:MOV A, Rn ;(A)←(Rn)
向通用寄存器传送:MOV Rn, A ;(Rn)←(A)
向直接地址传送:MOV direct,A ;(direct)←(A)
间址传送:MOV @Ri,A ;((Ri))←(A)
入栈指令:PUSH direct ;(sp)←(sp)+1,
;((sp))←(direct)
出栈指令:POP direct ;(direct)←((sp)),
;(sp)←(sp)-1
累加器传送指令
字节交换指令:XCH A,Rn ;(A)↔(Rn)
半字节交换指令:XCHD A,@Ri ; (A0~3) ↔((Ri) 0~3)
累加器高4位与低4位数据互换:
SWAP A ;(A0~3) ↔(A4~7)
累加器与外部RAM的传送:
MOVX A,@Ri ;(A) ←((Ri))
累加器与程序存储器传送:MOVC A,@A+DPTR
目标地址传送指令:MOV DPTR,#data16
算术运算指令(24条)
加法指令:ADD A,Rn ;(A) ←(A)+(Rn)
带进位加法:ADDC A,Rn ;(A) ←(A)+(Rn)+(C)
加1指令:INC A ;(A) ←(A)+1
十进制调整指令:DA A ;
减法指令:带借位减法指令:SUBB A,Rn;(A) ←(A)-(Rn)-(C)
减1指令:DEC A ;(A) ←(A)-1
乘法指令:MUL AB;(BA) ←(A)*(B)
除法指令:DIV AB ;(A) ←(A)/(B)
; (B) ←(A)%(B)
单操作数逻辑运算指令
累加器A清零:CLR A ;(A) ←0
累加器A取反:CPL A ;(A) ←(A)
累加器A循环左移:RL A;
累加器A循环右移: RR A;
累加器A带进位循环左移:RLC A;
累加器A带进位循环右移:RRC A;
双操作数逻辑运算指令
逻辑“与”指令:ANL A, Rn ;(A) ←(A)&(Rn)
逻辑“或”指令:ORL A, Rn ;(A) ←(A)|(Rn)
“异或”指令:XRL A, Rn ;(A) ←(A)^(Rn)
控制转移指令(17条)
1无条件转移指令
调用指令
绝对调用(2K)ACALL addr11
;(pc) ←(pc+2)
;(sp) ←(sp)+1,((sp)) ←(pc0~7)
;(sp) ←(sp)+1,((sp)) ←(pc8~15)
;(pc0~10) ← addr0~10
;(pc11~15)不变
长调用(64K)LCALL addr16
;(pc) ←(pc)+3
;(sp) ← (sp)+1,((sp)) ←(pc0~7)
;(sp) ← (sp)+1,((sp)) ←(pc8~15)
;(pc) ← addr16
返回指令
子程序返回(ACALL和LCALL)
RET;(pc8~15) ←((sp)),(sp) ←(sp)-1;(pc0~7) ←((sp)),(sp) ←(sp)-1
中断程序返回
RETI;(pc8~15) ←((sp)),(sp) ←(sp)-1
;(pc0~7) ←((sp)),(sp) ←(sp)-1 ;开放中断逻辑
转移指令
绝对转移AJMP addr11
;(pc0~10) ← addr0~10;(pc11~15)不变
长转移:LJMP addr16;(pc) ← addr16
相对转移(短转移,双向)SJMP rel ;(pc) ←(pc)+rel
间接转移指令(散转指令)JMP @A+DPTR ;(pc)←(A)+(DPTR)
空操作指令:NOP ;(pc) ←(pc)+1
条件转移指令(1)判零转移指令
JZ rel;当(A)为0则(pc) ←(pc)+rel ;否则,顺序执行
JNZ rel;当(A)非0,则(pc) ←(pc)+rel;否则,顺序执行
比较转移指令(-128B~+127B)CJNE A,direct,rel
跳转循环指令(减1不为0转移指令):
DJNZ Rn,rel ;(Rn) ←(Rn)-1,
;若(Rn)非0,则(pc) ←(pc)+rel
;否则,顺序执行
DJNZ direct,rel
;(direct) ←(direct)-1,
;若(direct)非0,
则(pc) ←(pc)+rel
;否则,顺序执行
布尔处理器指令(17条)
位变量地址空间
片内低RAM,Bit地址范围:00H~7FH(128位)
片内高RAM,地址能被8整除的SFR中对应各位(11个):
80H~F7H
布尔数据传送指令:MOV C ,bit ;(C) ←(bit)
※C为进位标志位Cy(不影响PSW)
布尔状态控制
位清“0”指令CLR C ;(C) ← 0
位置“1”指令:SETB C ;(C) ← 1
位取反指令:CPL C ;(C) ← (C)
位逻辑运算
位逻辑“与”指令:ANL C,bit ;(C) ← (C)&(bit)
位逻辑“或”指令:ORL C,bit ;(C) ← (C)|(bit)
位条件转移指令:
判断C转移:J C rel;当(C)为1,则(pc) ←(pc)+rel;否则,顺序执行
JNC rel;当(C)为0,则(pc) ←(pc)+rel;否则,顺序执行
判断位变量转移指令:JB bit, rel;当(bit)为1,则(pc) ←(pc)+rel;
否则,顺序执行
JNB bit, rel;当(bit)为0,则(pc) ←(pc)+rel;否则,顺序执行
※pc+rel中,(pc)表示为当前的指令地址即:执行跳转指令后的
下一条指令地址
判断位变量转移并清0指令:JBC bit, rel ;当(bit)为1,则(bit)
←0,(pc) ←(pc)+rel ;否则,顺序执行
※可用于对SFR的bit检测和软件复位(TFX)
汇编语言语句的种类和格式:
程序段说明伪指令ORG ORG 1000H
汇编结束伪指令END [标号:] END
伪指令语句
等值伪指令EQU和DL DDR EQU 1020H(不可改)
数据说明伪指令DB和DW TAB DB 0, 4, 8, 16, 32
保留存储区说明伪指令:STA DS 10H
软件延时子程序
DELAY:MOV R2, #data ;指令周期数=1
DELAY1: DJNZ R2, DELAY1;指令周期数=2
RET
延时时间=1(第一条指令周期)+(R2)×2(周期数); 影响CPU
工作效率
延时范围:3~513个机器周期,由(R2)决定
有符号数X存于内部RAM的DATA单元,Y存于FUNC单元,按
以下要求编程实现给Y赋值。绘出程序框图。程序清单:
ORG 4000H
MOV A,DATA;取出X送A
JZ COMP ;若X=0则转移到COMP
JNB ACC.7,POSI ;若X>0则转移到POSI
MOV A,#0FFH;若X<0则A= -1
SJMP COMP ;转分支结构出口
POSI:MOV A,#01H;X>0时A=1
COMP:MOV FUNC,A;存函数Y值
HERE:SJMP HERH;结束
2重以上的循环,内外层分明,且不能交叉
例1、50ms延时程序(设系统为12M的晶振)
DELAY: MOV R7,#200
DELAY_1 :MOV R6,#123
NOP
DELAY_2: DJNZ R6,DELAY_2
DJNZ R7,DELAY_1
RET
计算:【(123*2+1+1)+2】*200=250*200us
例2、定时程序如下:
MOV R5,#TIME1
LOOP2: MOV R4,#TIME2
LOOP1: NOP
NOP
DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET 该定时程序的执行时间为:其中T0为单片机的机器
周期
T=(((1+1+2)*TIME2+1+2)*TIME1+1)*T0
8051/8751最小应用系统(如图所示)
(1全部I/O口线开放(2内部存储器容量有限
(3)EA接高(4)P0、P2使用要注意
图6-2为用8031外接程序存储器构成的最小系统。
特点是:无内部ROM,需要构成三片最小系统,ALE下降沿锁存
地址底8位。
芯片选择方法:线选法和地址译码法。
8255A的3种工作方式:
方式0(基本输入/输出方式)数据输出有锁存,数据输入有缓
冲(无锁存)
方式1(选通输入/输出方式)A组包括A口和C口的高四位(PC7~
PC4),A口可由程序设定为输入口或输出口,C口的高四位则用
来作为输入/输出操作的控制和同步信号;B组包括B口和C口
的低四位(PC3~PC0),功能和A组相同。
方式2(双向I/O口方式)A口为8位双向I/O口,C口的PC7~
PC3用来作为输入输出的控制和同步信号。此时,B口可以工作
在方式0或方式1。
8255有两个控制字:方式控制字,置位/复位控制字
接口(Interface):计算机与外设的数据传送电路。
端口(Port):编程寻址的口寄存器,
编址方式:独立编址,统一编址
CPU与外设数据传送方式:直接、查询、中断、DMA
中断:计算机暂停正在执行的程序,去执行中断服务程序,服务
完成后回到原程序断开出继续执行。
CPU响应中断的条件:(1)有中断请求(2)中断请求没有被屏蔽(3)中
断是开放的或者是允许的(4)在现行指令结束后才响应中断
中断响应及中断期间应做的工作:
(1)关中断(2)保留断点(3)保护现场(4)给出中断,入口转入相应的
中断服务程序(5)恢复现场(6)开中断与返回