根据功能分类的5类MCS-51指令

注意 期末复习速打

根据功能分类的MCS-51指令
1.数据传送类指令(29条)
MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP等
XCH A,(Rn、direct、@Ri)
XCHD A,@Ri  A与Ri的低4位交换,高4位不变
SWAP A      高低半字节交换
堆栈操作指令组  
	PUSH direct  ;    先SP+1,再将内容送到SP指示的堆栈单元
	POP direct   ;    先将内容弹出,再SP-1
2.算术运算类指令(24条)
ADD、ADDC、INC、SUBB、DEC、MUL、DIV 、DA等8种	
进位标志(CY)(第7位有进位)、半进位标志(AC)(第3位有进位)、溢出标志(OV)置位或复位
ADD  A,Rn       ;(A)+(Rn)→(A)	
ADD  A,direct     ;(A)+(direct)→(A)	
ADD  A,@Ri      ;(A)+((Ri))→(A)
ADD  A,#data    ;(A)+data→(A)	
ADDC 带进位的加法(+CY)
SUBB 带借位减法指令(-CY)
INC和DEC不影响各个标志	
MUL AB   乘法指令	
#将A和B中两个无符号8位二进制数相乘,所得的16位积的低8位存于A中,高8位存于B中	
#当B不为0时,(OV)=1,CY 总是为0	
DIV AB 	
#无符号8位二进制相除,商存A,余数存B,B不为0时,(OV)=1,CY 总是为0	
DA A  对BCD码的加法结果进行调整,上一行有BCD数的相加就要有DA A 
3.逻辑运算类指令(24条)
ANL、ORL、XRL、RL左移、RLC、RR右移、RRC、CPL、CLR等九种
结果不影响PSW中标志位
ANL 与 ∧ 按“位”相“与”,结果放回目的地址单元(只能是A或direct)中
ORL 或 ∨ 按“位”相“或”,结果放回目的地址单元(只能是A或direct)中
XRL 异或 ⊕  同上 不同出1
4.控制转移类指令(17 条)
DJNZ  Rn、direct,rel 		 #decrease,jump if not zero
CJNE  						 #compare jump if not equal
SJMP rel                     #short jump 短转移指令
AJMP addr11                  #absolute jump绝对转移指令
LJMP addr16                  #long jump
5.布尔操作(位)类指令(17条)
MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC等11种
JC rel 						  (CY)=1,jump至rel
JNC rel 					  (CY)=0,jump至rel
JB bit,rel   				  (bit)=1,jump至rel
JNB bit,rel 				  (bit)=0,jump至rel
JB ACC.0,LOOP1
MOV  C,bit                   (C)←(bit)
MOV  bit,C                   (bit)←(C)
CLR  C                        (C)←0
CLR  bit                      (bit)←0
SETB C   ;                   (C)←l
SETB bit  ;                  (bit)←1
CPL  C                         取反
CPL  bit    

几个简单举例

〔1〕R0的内容输出到R1

MOV A,R0
MOV R1,A 

〔2〕内部RAM 20H单元的内容传送到A中

MOV A,20H 

〔3〕外部RAM 3OH单元的内容送到R0

MOV R0,#30H 
MOVX A,@R0 
MOV R0,A

〔4〕外部RAM 30H单元的内容送内部RAM 20H单元

MOV R1,#30H 
MOVX A,@R1 
MOV 20H,A

〔5〕外部RAM 1000H单元的内容送内部RAM 20H单元

MOV DPTR,#1000H
MOVX A,@DPTR 
MOV 20H,A 

〔6〕片外RAM 30H单元的内容传送给片外RAM 50H单元

MOV R1,#30H
MOV R0,#50H 
MOVX A,@R1
MOVX @R0,A    

〔7〕程序存储器ROM 2000H单元的内容送R1

MOV DPTR,#2000H
CLR A 
MOV A,@A+DPTR 
MOV R1,A 

〔8〕ROM 2000H单元的内容送到内部RAM 20H单元

MOV DPTR,#2000H
CLR A 
MOVC A,@A+DPTR 
MOC 20H,A

〔9〕用汇编语言编程将片内 RAM 中 30H 单元开始的 16 个字节数据,传送到片内 RAM 的 60H 开始的 16 个单元中,并将原数据块区域全部清零。

MAIN1: MOV R2,#10H  ;设置循环次数(16次)
	   MOV R1,#30H  ;设置数据开始单元位置
	   MOV R0,#11H  ;设置默认数据
LOOP1: MOV A,R0     ;将初始数据赋给A
	   MOV @R1,A    ;将A (初始数据)赋给30H,31H,32H...
	   INC R1       ;将地址位增
	   INC R0       ;默认数据增
	   DJNZ R2,LOOP1;若循环次数不达16次则跳转L0OP1循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值