南昌大学单片机chapter4.docVIP

  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文档。上传文档
查看更多
机器语言: 机器语言是二进制代码标识的指令、数字和符号,用机器语言编写的程序不容易看懂和记忆容易出错 汇编语言: 用助记符表示的指令成为符号语言或汇编语言 汇编可有专门的程序来完成,这种程序成为汇编程序 汇编语言的优点: 编写程序效率高,占用存储空间小,运行速度快 缺点:离不开具体机器的硬件,和机器语言是面向机器的语言缺乏通用性 高级语言: 不受具体机器的限制,参照数学语言设计的—8 片内RAM存放一批数据,查找出最大值并存放于首地址,设R0存放首地址,R2存放字节数 MOV R2,#n ;n为要比较的数据字节数 MOV A,R0 ;把指针地址存入A中 MOV R1,A ;以这样的形式把R0送入R1中是因为工作寄存器区域里面的R0~R7 能由A direct #data三种形式送入 所以这里采用这样的方法 (P36) DEC R2 ;n个字节已把第一个的地址送入了R1中,所以只剩下n-1个 所以减一 MOV A,@R1 ;把第一个数据送入A中 LOOP: MOV R3,A ;理由同第三行的指令 INC R1 ;地址加一,指向下一个数 CLR C ;初始化进位标志C SUBB A,@R1 ;下一个数和当前数相比较 JNC LOOP1 ;若C=0则 A中的数比较大,跳LOOP1 SUUB指令作用见P42带借位减法指令 MOV A,@R1 ;若C=1则A中的数比较小,所以下一项的数送入A中 SJMP LOOP2 ; LOOP1: MOV A,R3 ;恢复A因为A在SUBB指令后被破坏了 LOOP2:DJNZ R2,LOOP ;R2减一后查看R2是否等于0,若R2=0则n个字节数是否比较完毕,跳转下一条指令不跳转LOOP,若没有则跳转LOOP MOV @R0,A ;比较完后把A中存的最大数放入地址为R0的空间中 RET ;返回主程序 例子4-9 一批单字节无字符号数,以R0为首地址,R2中为字节数,这批数进行升序排列 SORT: MOV A,RO ; MOV R1,A ; MOV A,R2 ; MOV R5,A ;以上四条指令用于程序初始化 CLR F0 ;初始化标志符F0,F0为PSW.5用户设定标志为,作为互换位的标志 DEC R5 ;已经将第一个数据地址放入R1,所以要比较的次数要减去1,所以需要自减1 MOV A,@R1 ;第一个数据的值送入A中 LOOP:MOV R3,A ; 将A的数据送入R3中,存放起来用于之后A的数据在被破坏之后恢复 INC R1 ;地址指向下一个数 CLR C ; 进位标志符初始化清零 MOV A,@R1 ;开始比较啦!!!把下一个数送入A中 SUBB A,R3 ;相减 JNC LOOP1 ;如果进位标志符C等于0则说明A中的数比较小(这里A存放的是下一个数),则跳转到LOOP1不需要交换位置(因为题目要求升序排列)()JNC=JUMP IF NOT CARRY(IF CARRY=if Cy=1加了个NOT明白了吧 好记住了吧,同样CJNZ是COMPARE AND JUMP IF NOT ZERO 不等于0则跳转,记这个记助记符号很快的 可惜书上没有) SETB F0 ;执行此条指令是因为C=1说明下一个数大所以要交换啦,所以交换标志置1 MOV A,R3 ;恢复A XCH A,@R1 ;A与下一个数交换则A中存下一个数,下一个数变成了那个较大的数 DEC R1 ;地址减一位指向原来那个较大数的地址 XCH A,@R1 ;执行完这个就交换玩啦 INC R1 ; 指针回到交换之前的指向(如果上面的指令我没说清楚记得来问我) LOOP1:MOV A,@R1 ; 这里就是说明不需要交换的子程序啦

文档评论(0)

书是爱的奉献 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档