汇编如何实现16进制转10进制?

[复制链接]
 楼主| hanbing17 发表于 2010-4-30 10:42 | 显示全部楼层 |阅读模式
我想要将一个16进制的数 在液晶上以对应的10进制数显示出来,首先要先转化成10进制数,然后取10进制的百十个位数值 分别加上0x30H 可以在液晶上显示出来,但是遇到的问题是 在汇编里 如何将16进制转化成10进制数呢? 还有在汇编里 如何对一个数除以10求余,并把余数取出来?谢谢各位
QQ 992466035
mohanwei 发表于 2010-4-30 11:26 | 显示全部楼层
你没指定MCU,所以无法给出汇编。不过通用的懒方法是先编C,再通过编译器开关得到汇编代码,优化:
char buf[20];
unsigned int num=1234;
sprintf(buf,"%0u",num);
或者
char buf[20];
unsigned int num=1234;
buf[0] = num/1000;
num = num%1000;
buf[1] = num/100;
num = num%100;
buf[2] = num/10;
buf[3] = num%10;
liao_fangxing 发表于 2010-4-30 11:51 | 显示全部楼层
减法处理(循环)
ayb_ice 发表于 2010-4-30 11:53 | 显示全部楼层
网上大把的源代码
ningling_21 发表于 2010-4-30 18:50 | 显示全部楼层
51单片机的话就:(假如要显示的16进制数据放在 30H 单元)
程序如下(适用于不大于99的数据):
MOV A,30H
MOV B,#10
DIV  AB
MOV 40H,A  ;十位数字
MOV 41H,B  ;个位数字
...
....               ;显示程序

....
一棵小草 发表于 2010-4-30 21:02 | 显示全部楼层
07H--->7
17H--->1*16+7=23
47H--->4*16+7=71
1228H--->1*16*16*16+2*16*16+2*16+8=4096+512+32+8=4648

------------看了原理,你应该想到方法了吧。
汇编总该有加法,乘法指令,那么现在主要就是分离出16进制各个BCD码,下面我就不说了,你应该懂的,不懂就看书,书上很多算法的。
re张风 发表于 2010-4-30 21:53 | 显示全部楼层
以前写的汇编的,你看有没有用:
;=================BIN--->BCD==========

BCDD  EQU   10H    ;
BIND  EQU   08H    ;需要被转换的二进制数地址
BYTES EQU   04H    ;暂存要转换的二进制数个数

;输入
;R3为二进制的个数
;08 09 0a 0b 0c  十六进制数据输入(0c 为高字节)
;输出
;10 11 12 13 14 15   十进制数  (15 为高字节)

hex_dec:
       MOV    R0,#0
       MOV    R1,#0
       MOV    R2,#0
BINB:
       MOV   BYTES,R3
       MOV   R1,#BCDD
       MOV   R2,BYTES
       INC   R2
       CLR   A
BB0:
       MOV   @R1,A
       INC   R1
       DJNZ  R2,BB0  ;完成十进制数据寄存器清0
       MOV   A,BYTES
       MOV   B,#08H
       MUL   AB      ;统计二进制数据位数
       MOV   R3,A
BB3:
       MOV   R1,#BIND
       MOV   R2,BYTES
       CLR   C
BB1:
       MOV   A,@R1
       RLC   A
       MOV   @R1,A  ;取出原始二进制数带CY左移1位,取出最高位放入CY中
       INC   R1
       DJNZ  R2,BB1
       MOV   R2,BYTES
       INC   R2
       MOV   R1,#BCDD
BB2:
       MOV   A,@R1
       ADDC  A,@R1
       DA    A       ;bcd 校正
       MOV   @R1,A
       INC   R1
       DJNZ  R2,BB2
       DJNZ  R3,BB3
       RET
电子空对穴 发表于 2010-5-1 20:21 | 显示全部楼层
楼上的,你这个也太长了吧,似乎没有必要啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

13

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部