单片机第3章汇编程序设计第5次课.ppt

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

3.5 MCS-51系列单片机 ------------汇编程序设计 1、十六进制数与ASCII码间的转换 十六进制数与ASCII码的对应关系如表所示。当十六进制数在0~9之间时,其对应的ASCII码值为该十六进制数加30H;当十六进制数在A~F之间时,其对应的ASCII码值为该十六进制数加37H。 三、码型转换 例5 将1位十六进制数转换成相应的ASCII码。 设十六进制数存放在R0中,转换后的ASCII 码存放于R2中。实现程序如下: HASC:MOV A,R0 ;取4位二进制数 ANL A,#0FH ;屏蔽掉高4位 PUSH ACC ;4位二进制数入栈 CLR C ;清进(借)位位 SUBB A,#0AH ;用借位位的状态判断该数在0~9还是A~F之间 POP ACC ;弹出原4位二进制数 JC LOOP ;借位位为1,跳转至LOOP ADD A,#07H ;借位位为0,该数在A~F之间,加37H LOOP:ADD A,#30H ;该数在0~9之间,加30H MOV R2,A ;ASCII码存于R2 RET 例6 将多位十六进制数转换成ASCII码。 设地址指针R0指向十六进制数低位,R2中存放字节数,转换后地址指针R0指向十六进制数的高位。R1指向要存放的ASCII码的高位地址。实现程序如下: HTASC:MOV A,@R0 ;取低4位二进制数 ANL A,#0FH ; ADD A,#15 ;偏移量修正 MOVC A,@A+PC ;查表 MOV @R1,A ;存ASCII码 INC R1 ; MOV A ,@R0 ;取十六进制高4位 SWAP A ANL A,#0FH ; ADD A,#06H ;偏移值修正 MOVC A,@A+PC ; MOV @R1,A INC R0 ;指向下一单元 INC R1 ; DJNZ R2,HTASC ;字节数存于R2 RET ASCTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H 2、BCD码与二进制数之间的转换 在计算机中,十进制数要用BCD码来表示。通常,用四位二进制数表示一位BCD码,用1个字节表示2位BCD码(称为压缩型BCD码)。 例7 单字节压缩BCD码转换成二进制码子程序 设两个BCD码d1d0表示的两位十进制数压缩存于R2,其中R2高4位存十位,低4位存个位,要把其转换成纯二进制码的算法为:( d1d0)BCD=d1*10+d0,转换后的结果存于R2 BCD2B: MOV A,R2 ANL A,#0F0H ;取高位BCD码d1 SWAP A MOV B,#0AH MUL AB ;d1*10 MOV R3,A MOV A,R2 ANL A,#0FH ; 取低位BCD码d0 ADD A,R3; d1*10+d0 MOV R2,A RET 例8 双字节压缩BCD码转换成二进制码子程序 该转换的算法为: (d3d2d1d0)BCD=(d3*10+d2)*100+(d1*10+d0) ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SP,#30H MOV R5,#45H MOV R4,#67H ACALL BCD4B SJMP $ BCD4B: MOV A,R5 MOV R2,A ACALL BCD2B MOV B,#64H MUL AB MOV R6,A XCH A,B MOV R5,A MOV A,R4 MOV R2,A ACALL

文档评论(0)

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

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

1亿VIP精品文档

相关文档