16个拼装4位二进制数0~F转换成ASCII码 -单片机编程

将内部RAM中30H~37H单元的16个拼装4位二进制数0~F转换成ASCII码,并存入内部数据RAM以40H为首地址的区域中。

例如:

转换前:
地址:30H 31H 32H 33H 34H 35H 36H 37H
数据:01H 23H 45H 67H 89H ABH CDH EFH

转换后:
地址:40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH
数据:30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 41H 42H 43H 44H 45H 46H

编了下不知道对不对!望大家指正,谢谢!

提问者: stefine_ - 一级
悬赏分:0 - 解决时间:2009-10-22 15:41
;----------------------------------------------
最佳答案:

修改了楼主的错误,增加了填写原始数据的程序段,如下所示。

         ORG  0000H
         SJMP MAIN
         ORG  0050H
MAIN:
         MOV  30H, #01H     ;按照题目要求准备原始数据
         MOV  31H, #23H
         MOV  32H, #45H
         MOV  33H, #67H
         MOV  34H, #89H
         MOV  35H, #0ABH
         MOV  36H, #0CDH
         MOV  37H, #0EFH

;01H 23H 45H 67H 89H 0ABH 0CDH 0EFH
;------------------------------下面就是题目要求的转换程序

         MOV  R0, #30H        ;源地址
         MOV  R1, #40H        ;目的地址
         MOV  DPTR, #ASCTB
         MOV  R2, #8
LOOP:
         MOV  A, @R0
         ANL  A, #0F0H        ;取出高四位
         SWAP A
         ACALL TRANS
         MOV  A, @R0
         ANL  A, #0FH         ;取出低四位
         ACALL TRANS
         INC  R0
         DJNZ R2, LOOP        ;循环8次
         SJMP $               ;转换完成
;------------------------------下面是用查表方法求ASCII码的程序
TRANS:
         MOVC A, @A + DPTR
         MOV  @R1, A
         INC  R1
         RET
ASCTB:
         DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
         DB 41H,42H,43H,44H,45H,46H
END
;----------------------------------------------
回答者: 做而论道 - 八级   2009-10-20 13:03
原题网址:http://zhidao.baidu.com/question/122171432.html
;----------------------------------------------

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值