指令系统及汇编语言程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(3)BCD码转换为二进制码子程序 例: 设有用BCD码表示的4位十进制数分别存于R1, R2中, 其中R2存千位和百位数, R1存拾位和个位数, 要把其转换成二进制码。 解决思路:可用由高位到低位逐位检查BCD码的数值,然后累加各十进制位(乘权值)对应的二进制数来实现。其中, 1000=03E8H, 100=0064H, 10=000AH (个位数的BCD码与二进制码相同)。 * * 入口: 待转换的BCD码存于R1, R2中, 分配如下: 低位字节 : R1 ; 高位字节 : R2 出口: 结果存在20H, 21H单元中, 其中20H存低字节, 21H存高字节。 R1 十位数 个位数 R2 千位数 百位数 (3)BCD码转换为二进制码子程序 BCDB11:MOV 20H, #00H MOV 21H, #00H ;存结果单元清0 MOV R3, #0E8H MOV R4, #03H ;1千的二进制数03E8H送R3, R4 MOV A, R2 ANL A, #0F0H ;取千位数 SWAP A ;将千位数移至低四位 JZ BRAN1 ;千位数为0则转BRAN1, 去处理百位数 LOOP1: DEC A LCALL ADDT ;千位数不为0, 加千位数二进制权码 ;千位数是n, 就加n次千位数二进制码03E8H JNZ LOOP1 ;本循环即实现千位数n乘权值03E8H * * BRAN1:MOV R3, #64H ;下面实现百位数转二进制码 MOV R4, #00H ;百位数的二进制码64H送R3, R4 MOV A, R2 ANL A, #0FH ;取百位数 JZ BRAN2 ;百位数是0转BRAN2, 去处理十位数 LOOP2: DEC A LCALL ADDT ;加百位数二进制权码 JNZ LOOP2 ;百位数是n, 就加n次64H * * BRAN2: MOV R3, #0AH ;十位数权值0AH送R3, R4=00H MOV A, R1 ;下面实现十位数转二进制码 ANL A, #0F0H ;取十位数 SWAP A JZ BRAN3 ;十位数为0转BRAN3, 去处理个位数 LOOP3: DEC A LCALL ADDT ;十位数不为0, 加十位数二进制权码 JNZ LOOP3 ;十位数是n, 就加n次0AH * * BRAN3: MOV A, R1 ANL A, #0FH ;取个位数 MOV R3, A ;个位数(权值是自身)送R3, R4=00H LCALL ADDT ;加个位数二进制码 RET ADDT: PUSH PSW PUSH ACC CLR C MOV A, 20H ;20H(低), 21H单元存累加的转换结果 ADD A, R3 ;累加转换结果 MOV 20H, A MOV A, 21H ADDC A, R4 MOV 21H, A POP ACC POP PSW RET ; R3, R4存1千(百, 十)的二进制数权值03E8H(0064H, 000AH) 7、IAP15W4K58S4单片机双数据指针的使用 两个16位的数据指针:DPTR0和DPTR1。它们的逻辑地址相同,但是物理上是独立的。 功能:利用这两个数据指针,可

文档评论(0)

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

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

1亿VIP精品文档

相关文档