第三章 单片机汇编程序设计.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
注意:在单片机程序设计中,通常用到一条SJMP指令: SJMP $ 该指令的功能是在自己本身上循环,进入等待状态。其中符号 $ 表示转移到本身,它的机器码为80 FEH。在程序设计中,程序的最后一条指令通常用它,使程序不再向后执行以避免执行后面的内容而出错。 4.间接转移指令 指令格式:JMP @A+DPTR ;PC ← A + DPTR 它MCS-51系统中唯一一条间接转移指令,转移的目的地址是由数据指针DPTR的内容与累加器A中的内容相加得到,指令执行后不会改变DPTR及A中原来的内容。数据指针DPTR的内容一般为基址,累加器A的内容为相对偏移量,在64 KB范围内无条件转移。 该指令的特点是转移地址可以在程序运行中加以改变。DPTR一般为确定值,根据累加器A的值来实现转移到不同的分支。在使用时往往与一个转移指令表一起来实现多分支转移。 【例3-12】下面的程序能根据累加器A的值0、2、4、6转移到相应的TAB0~TA6分支去执行。 MOV DPTR,#TABLE ;表首地址送DPTR JMP @A+DPTR ;根据A值转移 TABLE:AJMP TAB0 ;当(A)=0时转TAB0执行 AJMP TAB2 ;当(A)=2时转TAB2执行 AJMP TAB4 ;当(A)=4时转TAB4执行 AJMP TAB6 ;当(A)=6时转TAB6执行 二.条件转移指令 条件转移指令是指当条件满足时,程序转移到指定位置,条件不满足时,程序将继续顺次执行。在MCS-51系统中,条件转移指令有三种:累加器A判零条件转移指令、比较转移指令、减1不为零转移指令。 1.累加器A判零条件转移指令 判0指令:JZ rel ;若A=0,则PC ← PC + 2 + rel,否则,PC ← PC + 2 判非0指令:JNZ rel ;若A?0,则PC ← PC + 2 + rel,否则,PC ← PC + 2 【例3-13】把片外RAM的30H单元开始的数据块传送到片内RAM的40H开始的位置,直到出现零为止。 片内、片外数据传送以累加器A过渡。每次传送一个字节,通过循环处理,直到处理到传送的内容为0结束。 程序如下: MOV R0,#30H MOV R1,#40H LOOP:MOVX A,@R0 MOV @R1,A INC R1 INC R0 JNZ LOOP SJMP $ 2.比较转移指令 比较转移指令用于对两个数作比较,并根据比较情况进行转移,比较转移指令有四条: CJNE A,#data,rel ;若A=data,则PC ← PC + 3,不转移,继续执行 若A>data,则C=0,PC ← PC + 3 + rel,转移 若A<data,则C=1,PC ← PC + 3 + rel,转移 CJNE Rn,#data,rel ;若(Rn)=data,则PC ← PC + 3,不转移,继续执行 若(Rn)>data,则C=0,PC ← PC + 3 + rel,转移 若(Rn)<data,则C=1,PC ← PC + 3 + rel,转移 CJNE @Ri,#data,rel ;若((Ri))=data,则PC ← PC + 3,不转移,继续执行 若((Ri))>data,则C=0,PC ← PC + 3 + rel,转移 若((Ri))<data,则C=1,PC ← PC + 3 + rel,转移 CJNE A,direct,rel ;若A=direct,则PC ← PC + 3,不转移,继续执行 若A>direct,则C=0,PC ← PC + 3 + rel,转移 若A<direct,则C=1,PC ← PC + 3 + rel,转移 3.减1不为零转移指令 这种指令是先减1后判断,若不为零则转移。指令有两条: DJNZ Rn,rel ;先Rn中的内容减1,再判断Rn中的内容是否等于零,若不为零,则转移。 DJNZ direct,rel ;先(direct)中的内容减1,再判断(direct)中的内容是否等于零,若不为零,则转移。 在MCS-51系统中,通常用DJNZ指令来构造循环结构,实现重复处理。 【例3-14】统计片内RAM中30H单元开始的20个数据中0个数,放于R7中。 用R2作循环变量,最开始置初值为20;作R7作计数器,最开始置初值为0;用R0作

文档评论(0)

38号店铺 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档