搜索
bottom↓
回复: 7

如何处理三字节16进制数转换10进制数

[复制链接]

出0入0汤圆

发表于 2014-2-26 23:31:52 | 显示全部楼层 |阅读模式
请教使用51汇编,如何处理     三字节16进制数转换10进制数,,网上找到了最多是双字节16转10进制,可是怎么改都不行 。。。。。。

出0入0汤圆

发表于 2014-2-27 01:19:31 | 显示全部楼层
进制是给人看的,对于单片机来说什么都是0 和 1,比如某个变量a直是十进制的20,十六进制就是14H,但是无论是什么进制变量地址都是存00010100。现在我要你把14H转成10进制,还能怎么转?

出0入0汤圆

发表于 2014-2-27 08:29:51 | 显示全部楼层
转成10进制显示?

先说清楚,3字节是如何分配的?565、556、655哪种分配的,自己按位数去取、再转

出0入0汤圆

发表于 2014-2-27 12:21:52 | 显示全部楼层
你是想处理成BCD码吧? 这个有什么好转的, 先用c写, 编译后看汇编就行了。

出145入215汤圆

发表于 2014-3-3 00:41:40 | 显示全部楼层
本帖最后由 dz20062008 于 2014-3-3 00:48 编辑

谁能写个C的看看,看看汇编的编码量有多大!这难道就是传说的浮点运算?

楼主的三字节就是十六进制最大为FFF占八位的51单片机2字节存储,二进制的话就是00001111 11111111也是两字节,换成8421BCD码就痛苦了!最大24095 需要5字节。平时处理一字节的的十六进制也就是两位FF转8421BCD码的思路是用除法去加权。
例子如下:
HEXtoBCD:PUSH ACC
          PUSH B
          MOV A,TEMP_DATA
          MOV B,#100D
          DIV AB
          MOV R0,A
          MOV A,#10D
          XCH A,B
          DIV AB
          MOV R1,A
          MOV R2,B
          POP B
          POP ACC
          RET

当运算量超过一字节,也就是8421BCD码超过255时问题出来了,也就出现了浮点运算。除法去加权就行不通了。汇编算法就复杂了~让我们开开眼界见证C的牛×之处吧~

那位大虾上浮点酸菜:
PS:用51装(运行)酸菜(C代码加汇编代码)!

出0入0汤圆

发表于 2014-3-3 01:19:10 | 显示全部楼层
http://www.amobbs.com/thread-3995103-1-1.html

出0入0汤圆

发表于 2014-3-21 13:51:20 | 显示全部楼层
在网上找的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-10-25 14:52:25 | 显示全部楼层
顶一下,不错必须的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 18:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表