第3章 MCS-51 单片机的指令系统1.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 MCS-51 单片机的指令系统1.ppt

第3章 MCS-51单片机的指令系统 §1 指令系统概述 MCS—51单片机指令系统分为: 数据传送类指令、 算术运算类指令、逻辑运算及移位类指令、控制转移类指令和位操作(布尔操作)指令5大类, 共计111条指令。现按其分类分别介绍各条指令的格式、 功能、对状态标志的影响以及应用。 例:将内部RAM中从DATA单元开始的10个无符号数相加,相加结果送SUM 单元保存。 例:软件延时程序 MOV R1,#0AH ; 给R1赋循环初值 DELAY:DJNZ R1,DELAY ;若(R1)-1≠0则循环 1 位传送指令 MOV C,BIT;(BIT) (C) MOV BIT,C;(C) (BIT) 四 位操作指令 2 位变量修改指令 CLR C;0 (C) CLR BIT;0 (BIT) SETB C;1 (C) SETB BIT;1 (BIT) CPL C;(C) (C) CPL BIT;(BIT) (C) 3 位逻辑运算指令 ANL C,BIT;(C)∧(BIT) (C) ANL C,BIT;(C)∧(BIT) (C) ORL C,BIT;(C)∨(BIT) (C) ORL C,BIT;(C)∨(BIT) (C) 五 控制转移指令 控制转移指令用于改变程序计数器PC值,以控制程序执行走向。 1 无条件转移指令 1.1 长转移指令 LJMP addr16;addr16 (PC) 指令的功能是把addr16送入程序计数器PC,使机器执行下条指令时无条件转移到addr16处执行程序。 长转移指令是可以在64KB范围内转移的指令。 Addr16常采用符号地址(如LOOP、TIME)等。 1.2 绝对转移指令 AJMP addr11; 指令中提供11位地址,与PC当前值的高5位共同组成16位目标地址,程序无条件转向目标地址。 11位地址表示的存储空间为2KB,所以转移目标地址必须设置在包含AJMP指令后第一条指令的第一个字节在内的同一2KB范围内。 例:2FFFH:AJMP L1; 当前(PC)=2FFFH+2=3001H 转移地址PC=00110××××××××××× 保持高5位不变,L1地址标号范围3000H-37FFH 1.3 短转移指令 SJMP rel; (PC)+2 (PC),(PC)+rel (PC) Rel为8位地址偏移量,以补码形式出现。 1.4 间接转移指令 JMP @A+DPTR; ((A)+(DPTR)) (PC) 转移地址不是在编程时确定的,而是在程序运行时动态决定的。在DPTR中装入多分支程序的首地址,由累加器A的内容动态选择其中的某一分支进行分支转移。 2 条件转移指令 是依据某种特定条件而转移的指令,条件满足时程序转移,不满足条件时则按顺序执行下面的程序。 2.1 累加器判零转移指令 JZ rel; (PC)+2 (PC) 若累加器为0,(PC)+rel (PC) 若累加器不为0顺序执行程序。 JNZ rel; (PC)+2 (PC) 若累加器不为0,(PC)+rel (PC) 若累加器为0顺序执行程序。 2.2 比较转移指令 CJNE <目的字节>,<源字节>,rel 指令功能对目的字节和源字节两个操作数进行比较。若它们的值不等则转移,相等则按顺序执行程序。 CJNE A,#DATA,rel; CJNE A,direct,rel; CJNE @Ri,#DATA,rel; CJNE Rn,#DATA,rel; (PC)+3 (PC) 比较=? Y N (PC)+rel (PC) 若<则CY=1 若≥则CY=0 顺序执行 2.3 循环转移指令 DJNZ Rn,rel; (Rn)-1 (Rn) 若Rn=0,(PC)+2 (PC), 若Rn≠0,(PC)+2+rel (PC) DJNZ direct,rel; (direct)-1 (direct) 若direct=0,(PC)+3 (PC), 若direct≠0,(PC)+3+rel (PC) 每执行一次该指令,第一操作数字节变量减1,结果送回第一操作数中,并判字节变量是否为0,不为0则转移,否则顺序执行。 例:试编写程序完成以内部RAM30H为首地址的20个数据传送,目的地址为外部以3000H为首地址的区域 MOV R0,#14H; MOV R1,#30H; MOV DPTR,#3000H; LOOP:MOV A,@R1; MOVX @DPTR,A; INC R1; INC DPTR;

文档评论(0)

书屋 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档