MCS 51系列单片机原理及接口技术 第2版 教学课件 作者 邹振春 第三章 MCS 51汇编语言指令.pptVIP

MCS 51系列单片机原理及接口技术 第2版 教学课件 作者 邹振春 第三章 MCS 51汇编语言指令.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 MCS-51汇编语言指令 寻址方式 汇编语言程序设计基础 数据传送类指令 逻辑操作类指令 算术运算类指令 位操作指令 控制转移类指令 程序设计举例 使用该指令可使子程序在64KB范围内任意存放。 另外,由于子程序调用指令只把返回地址压入堆栈,并不保存其它任何单元的内容。所以,当子程序中使用了一些其它单元时,用户必须注意,在子程序开始处把这些单元的内容压入堆栈以保护现场,在子程序返回前从堆栈弹出这些单元的内容以恢复现场。 例3-50. 设(SP)=53H,子程序首址在3000H单元,并以标号STP表示。 在(PC)=2000H处执行指令:LCALL STR 将使(SP)=55H,(54H)=03H,(55H)=20H,PC将变为3000H。 ⒉ 绝对调用指令 ACALL addr11 代码:a10a9a81 0001 a7~0 操作: (PC)←(PC)+2 (SP)←(SP)+1 ((SP))←(PC7~0) (SP)←(SP)+1 ((SP))←(PC15~8) (PC10~0)←addr10~0 (PC15~11)不变 该指令与AJMP指令类似,提供11位目标地址,限在同一2KB地址内调用。 该指令是双字节指令,所以执行时(PC)+2→(PC)以获得下一条指令的地址,然后把该地址压入堆栈作为返回地址,其它操作与AJMP相同。 该指令的操作码的形成也与AJMP类似。对于在子程序中使用到的一些单元,也必须注意在子程序开始处加以保护,在子程序结束返回主程序时加以恢复。 例3-51. 地址 指令 机器码 2345H ACALL 2678H D 1 78 例3-52. 2567H ACALL 2DEFH 无 6×2+1=13(D) 由于超过同一2KB区,所以无机器码 ⒊ 子程序返回指令 RET 代码:0010 0010 ;22H 操作:(PC15~8) ← ((SP)) (SP)←(SP)-1 (PC7~0) ← ((SP)) (SP)←(SP)-1 该指令执行时,表示子程序结束需要返回主程序; 执行该指令时,分别从栈中弹出调用子程序时压入的返回地址,使程序从调用指令(LCALL或ACALL)的下面相邻指令开始继续执行主程序。 例如,设(SP)=55H,内RAM中(54H)=03H,(55H)=20H, 则执行RET后,使:(SP)=53H,(PC)=2003H 程序从2003H开始继续执行。 ⒋ 中断返回指令 RETI 代码:0011 0010 ;32H 说明:该指令与中断有关,是中断服务程序的最后一条指令,用于从中断服务程序返回发生中断的地方继续执行。其执行过程类似于RET。 ⒌ 空操作指令 NOP 代码:0000 0000 ;00H 操作:(PC)←(PC)+1 说明:■空操作指令严格说来,并无使程序转移的功能,为了方便,不再单独分类。 执行该指令时,PC加1,转向下一条指令执行,除了发生中断时锁存中断信号外,不作任何操作,不影响任何寄存器及标志。 该指令执行时间只用一个机器周期。主要用于精确延时或时间上的等待。 例3-53. 编制10mS延时子程序。 MOV R1,#2DH ;1周期 AGAIN: MOV R2,#6Dh ;1周期 NOP ;1周期 DELAY: DJNZ R2,DELAY ;2周期 DJNZ R1,AGAIN ;2周期 NOP ;1周期 NOP ;1周期 NOP ;1周期 NOP ;1周期 NOP ;1周期 RET ;2周期 ×109 ×45=9990周期 设晶振频率为12MHz,此程序延时9998?S,加上子程序调用指令,正好是10000?S =10mS。 3.8 程序设计举例 3.8.1码制转换 1.将一组N个压缩BCD码转换为2N个ASCII码 入口:(R0)存放压缩BCD码的起始地址,(R7)压缩BCD码个数N 出口:(R1)ASCII码的起始地址。 BCD2ASCII: PUSH ACC ;保护累加器 PUSH R1 ;保护ASCII码起始地址 LOOP: MOV A,@R0 ;获取压缩BCD码 SWAP A ;转换高位 AN

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档