单片机第四章 MCS-51指令系统.ppt

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

例:十进制减法:R4=R3-R2 DECSUB:CLR C MOV A,#9AH SUBB A,R2 ADD A,R3 DA A MOV R4,A CLR C 例:延时10ms子程序(设晶振的频率为12MHz)。在知道系统的晶振频率之后,延时时间主要与两个因素有关:一是内循环中指令的执行时间;二是外循环时间常数(内循环的循环次数)的设置。在本例中,已知晶振频率为12MHz,则可得一个机器周期为1μs,执行一条 DJNZ Rn,rel的指令的时间为两个机器周期即2μs,10ms的延时子程序设计如下: 3.相对转移指令 SJMP rel 实现的程序转移是双向的。 在编写程序时,直接写上要转向的目标地址标号就可以。例如: LOOP: MOV A,R6 ? ┇ ? SJMP LOOP ┇ 程序在汇编时,由汇编程序自动计算和填入偏移量。手工汇编时,偏移量rel的值则需程序设计人员自己计算。 上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。 那么他们的区别何在呢? 4.间接跳转指令 JMP @A+DPTR 由A中8位无符号数与DPTR的16位数内容之和来确定。以DPTR内容作为基址,A的内容作变址。 给A赋予不同的值,即可实现程序的多分支转移。 跳转的范围不同。 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 转移范围: 2KB 64KB -128~+127 指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 指令长度不同(2,3,2) 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。 间接转移指令:JMP @A+DPTR 这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。 转移地址由A(8位无符号)+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。 第四条指令与前三条指令相比有所不同 例: MOV DPTR,#TAB ;将TAB代表的地址送入DPTR JMP @A+DPTR ;跳转 TAB: AJMP ROUT0 ;跳转ROUT0开始的程序段 TAB+2: AJMP ROUT1 ;跳转ROUT1开始的程序段 TAB+4: AJMP ROUT2 ;跳转ROUT2开始的程序段 TAB+6: AJMP ROUT3 ;跳转ROUT3开始的程序段 ... ROUT0: ... ROUT1: ... ROUT2: ... ROUT3: 执行该段程序后,程序将根据A中的内容转移到不同的程序段去执行----散转。 A=0,转ROUT0 A=2,转ROUT1 A=4,转ROUT2 A=6,转ROUT3 4.6.2 条件转移指令(8条) 条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。 一、判A内容是否为0转移指令(2条) JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A≠0,就转移。 转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel 我们在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。 例: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 在执行上面这段程序前:如果R0=0,结果R1=0FFH。而如果R0?0,则结果是R1=00H。 把上面的那个例子中的JZ改成JNZ,看看程序执行的结果是什么? 如果R0=0,结果R1=00H。如果R0?0,结果是R1中的值为0FFH。 二、比较不等转移指令(4条) CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 此类指令的功能是将两个操作数比较,如果两者

文档评论(0)

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

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

1亿VIP精品文档

相关文档