单片机应用课件2 MCS-51指令系统_第1页
单片机应用课件2 MCS-51指令系统_第2页
单片机应用课件2 MCS-51指令系统_第3页
单片机应用课件2 MCS-51指令系统_第4页
单片机应用课件2 MCS-51指令系统_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令,第 章 MCS 51 指令系统,本章内容,2,指令概述,指令按字节长度可以分为三种:,指令格式,指令的格式:,例如: MOV A,R0,例如:MOV A,30H,例如:MOV DPTR,#2010H,3,一、寻址方式(找信方式),我的信在他那!找信去!,注:找信是寻找信的“地址”!,4,目的地,操作数,MOV P1, #55H,MOV A, #01H,#55H,目的地,信,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,5,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接

2、寻址,变址寻址,相对寻址,位寻址,内部RAM 或SFR区,操作数,XXH,MOV P1, 20H,20H,目的地,20H,注:寻址是寻操作数的“地址”!,直接给出地址 20H直接寻址,6,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,寄存器,目的地,操作数,XXH,MOV P1, A,寄存器,R0-R7 A B DPTR,7,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOV P1, R0,目的地,寄存器,操作数,3AH,内部RAM,3AH,65H,3AH,R0 R1 DPTR,目的地,2号,信在2号箱子里,1号,8,寄

3、存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOVC A, A+DPTR,目的地,寄存器,操作数,内部RAM,65H,基址寄存器 12H,变址寄存器 34H,内部RAM,46H,65H,A,DPTR PC,46H,9,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,操作数,SJMP 54H,+,54H,PC,2002H,2002H =2056H,PC,2056H,10,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,1,0 0 0 0 0 0 0 0,想一想: 如果想使27H单元的第3位置1,该

4、怎么办呢?,11,位寻址地址表,例:SETB 3DH,3D,3C,3B,3F,3E,3A,39,38,27H,12,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,SETB 3DH,0 0 0 0 0 0 0,1,0,13,二、指令系统,1、指令描述约定,14,2、MCS-51的指令,2.1 数据传送指令(29条) 2.2 算术运算指令(24条) 2.3 逻辑运算指令(24条) 2.4 控制转移指令(17条) 2.5 位操作指令(17条),15,目的地址 源地址,数 据,MOV ,MOV A,#20H,,,MOV,20H,A,2.1 数据传送指令(29条) 8位数

5、据传送指令(15条),16,2.1 数据传送指令举例,MOV A,R1 ;将工作寄存器R1中的值送入到累加器A中,R1中的值保持不变。 MOV A,50H;将内存50H单元中的值送入到累加器A中,50H单元中的值保持不变。 MOV A,R1;先看R1中是什么值,把这个值当做地址,并将这个地址单元中的值送入累加器A中,前面我们已学过,这是寄存器间接寻址方式。,17,2.1 数据传送指令(29条) 16位数据传送指令(1条),MOV DPTR,#data16,外部数据传送指令(4条),MOVX ,,,MOVX,18,2.1外部数据传送指令举例,例:将外部RAM中100H单元中的内容送入外部RAM中

6、200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A,19,交换和查表类指令(9条),,,A,XCH,1)字节交换指令(3条),2)低半字节交换指令(1条),XCHD A , Ri,3)累加器A中高4位和低4位交换(1条),SWAP A,4)查表指令(2条),MOVC A , A+PC,MOVC A , A+DPTR,5)堆栈操作指令(2条),PUSH direct,POP direct,20,direct,2.2算术运算类指令(24条) 加法指令(8条),A ,,Rn,Ri,#data,ADD,direct,A ,,

7、Rn,Ri,#data,ADDC,减法指令(4条),direct,A ,,Rn,Ri,#data,SUBB,BCD码调整指令(1条),DA A,注意:DA A指令只能跟在ADD或ADDC 加法指令后,不适用于减法指令。,21,带进位加法指令,例如:1067H+10A0H,先做67H+A0H=107H,而107H显然超过了0FFH,因此,最终保存在A中的数是7,而1则到了PSW中的CY位了,换言之,CY就相当于100H。然后再做10H+10H+CY,结果是21H,所以最终的结果是2107H。,22,加1减1指令,23,加1减1指令,例:(A)=12H,(R0)=33H,(21H)=32H,(34

8、H)=22H,DPTR=1234H。执行下面的指令; INC A ;(A)=13H INC R0 ;(R0)=34H INC 21H ;(21H)=33H INC R0 ;(34H)=23H INC DPTR;(DPTR)=1235H,24,练习,1. 执行如下三条指令后,30H单元的内容是( )。 MOV R1,#30H MOV 40H,#0EH MOV R1,40H A. 40H B. 30H C. 0EH D. FFH,2. 有如下程序段 : MOV R0,#30H SETB C CLR A ADDC A,#00H MOV R0,A 执行结果是( )。 A. (30H)=00H B.(3

9、0H)=01H C.(00H)=00H D.(00H)=01H,25,乘法指令(1条),MUL A B 这个指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于0FFFFH(65536),否则OV=0,但进位标志位CY总是等于0。 例:(A)=4EH,(B)=5DH,执行指令 MUL AB后,乘积是1C56H,所以在B中放的是1CH,而A中放的则是56H。,除法指令(1条),DIV A B 这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数

10、存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。 例如:13/5,其商是2,余数是3。除了以后,商会放在A中,余数放在B中,CY和OV都是0。如果在做除法前B中的值是00H,也就是除数为0,那么OV=1,26,2.3逻辑及移位类指令 逻辑与指令(6条),27,逻辑或指令(6条),28,逻辑异或指令(6条),29,累加器A清0和取反指令,30,A.0,A.7,A.0,A.7,A.0,A.7,A.0,A.7,CY,CY,RL A RR A RLC A RRC A,注意:执行带进位的循环移位指令之前,必须给

11、CY置位或清零。,循环移位指令,31,2.4 控制转移类指令 无条件转移指令(4条),1) 长转移指令:LJMP AAAAH ; AAAAHPC,PC=0000H,PC=AAAAH,假设执行该指令前,PC的值为0000H。,注意:该指令可以转移到64 KB程序存储器中的任意位置。,32,PC高5位 (保持不变),PC低11位,操作码(第一字节),操作数(第二字节),11位转移地址的形成示意图,程序计数器PC,2)绝对转移指令,AJMP addr11 ; PC+2PC, addr11 PC.10PC.0,33,PC,2002H,2003H,0000H,0001H,2004H,2005H,2006

12、H,PC,PC,PC,2006H,2003H,PC,0002H,PC,3)短转移指令,例: SJMP 03H,03H就是当前PC值 与目的PC值相对差,PC,34,条件转移指令(8条) 1)累加器A判0指令(2条),2)减1条件转移指令(2条),35,3)数值比较转移指令(4条),36,条件转移类指令范例方案一,将00H0FH这16个数顺序地置入片内RAM20H2FH单元中。 MOV R0,#20H MOV R7,#0FH CLR A LOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP $,37,条件转移类指令范例方案二,MOV R0,#20H MOV R

13、7,#0FH CLR A LOOP:MOV R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP $,38,条件转移类指令范例方案三,MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $,39,条件转移类指令范例方案四,MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP $,40,调用和返回指令(8条) 1)绝对调

14、用指令(1条),2)长调用指令(1条),41,3)返回指令,4)空操作,42,2.5 位操作类指令,RAM 位寻址区位地址表,43,2.位置位和位清零指令,1.位传送指令,44,3.位运算指令,4.位转移指令,45,5.判CY标志指令,46,练习,1. 程序计数器PC用来( )。 a. 存放指令 b. 存放正在执行的指令地址 c. 存放下一条的指令地址 d. 存放上一条的指令地址,2. 8051 有四个工作寄存器区,由 PSW 状态字中的 RS1 、 RS0 两位的状态来决定,单片机 复位后,若执行 SETB RS1 指令,此时只能使用( )区的工作寄存器。 a. 0 区 b. 1 区 c.

15、2 区 d. 3 区,47,3. 当执行调用指令时,首先将该指令下一条指令的地址压入到堆栈区,保护其下一条指令的地址,然后再将转移的地址送 ( ) 实现转移;当再执行 RET 指令时自动将堆栈中的地址弹入 PC 从而实现返回。 a. DPTR b. PC c. SP d. PSW,4. 将内部数据存储单元的内容传送到累加器A中的指令是( )。 a. MOV direct,Rn b. MOV A,Ri c. MOV A,#data d. MOVX A,Ri,48,5. 8051单片机的堆栈区位于 。 a. 片内数据存储器 b. 片内程序存储器 c. 片外数据存储器 d. 片外程序存储器,6. 在

16、下列指令中 ,属判位转移的指令是( )。 a. AJMP addr11 b. CJNE A,direct,rel c. DJNZ Rn,rel d. JNC rel,49,7. 在程序运行过程中执行 PC=0200H的一条指令LCALL addr16,实施该调用指令时,压入堆栈保存的程序地址是( )。 a. 2000H b. 0102H c. 0203H d. 0201H,8. 分别指出指令INC R0和INC R0的执行结果。 设R0=30H,(30H)=00H。 INC R0 INC R0,50,9. 分析下面程序段,累加器 A 中的内容为() ORG 0000H MOV 30H, #45H MOV R0, #30H MOV A, R0 ANL A, #0F0H SWAP A ORL A, #30H SJMP $ END a. 45H b. 35H c. 30H d. 34H,51,10.分析下面程序段,累加器 A 中的内容为() 。 ORG 0000H MOV 30H, #45H MOV R0, #30H MOV A, #30H XCHD A, R0 SJMP $ END a. 45H b. 35

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论