打印

十六进制转换十进制(汇编)求教

[复制链接]
3416|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hb923|  楼主 | 2007-2-1 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
汇编语音51系列单片机
如果没有DA指令,只有位操作,加减法操作。怎么用最简程序写16进制转换到10进制的程序?(最简程序是指代码空间最小),不要/1000 /100 /10 /1的方法:因为这太占有单片机资源了。
注意:该单片机没有DA指令。

相关帖子

沙发
duanhnhy| | 2007-2-1 16:37 | 只看该作者

RE

请问是多少位的16进制转10进制呢?

使用特权

评论回复
板凳
hb923|  楼主 | 2007-2-1 16:44 | 只看该作者

哦,2位,2bytes,最多3bytes

使用特权

评论回复
地板
反孔精英| | 2007-2-2 21:27 | 只看该作者

如果数字比较固定可以用个查表程序啊

如果数字比较固定可以用个查表程序啊

使用特权

评论回复
5
zlove1984| | 2007-2-2 22:09 | 只看该作者

使用特权

评论回复
6
wenbinjj| | 2007-2-5 03:57 | 只看该作者

这样

有乘除法的,没有DA
;*****************************function HextoAScii start*************************************
;the function name:4 byte 2 进制到十进制ASCII码的转换
;param:bufferNum/4 byte,buffer/9 byte,bufferSize/9 byte
;exp:   mov buffer,#11h     ;数据暂存区,为11H---(BufferSize+11H-1h)
;         mov bufferNum,#2Dh
;        mov bufferSize,#9H
;         call HexToAscii
;bufferNum最后只剩下最高位25h,为对应的十进制的最高位,其它清零。
    ;*******************************************************************************************
HEXTOASCII:
    mov     r3,#bufferSize
    mov     r1,#buffer
HEXTOASCII0:
      mov     r2,#3h
        mov     r0,#bufferNum-3
      mov     a,@r0
      mov     b,#0ah
     div     ab
     mov     @r0,a
HEXTOASCII1:
       mov     a,b
      swap     a
      mov     b,a
      inc     r0
      mov     a,@r0
      anl     a,#0f0h
      swap     a
      add     a,b
      mov     b,#0ah
      div     ab
      swap     a
      xch     a,@r0
      anl     a,#0fh
      xch     a,b
      swap     a
      add     a,b
      mov     b,#0ah
      div     ab
      add     a,@r0
      mov     @r0,a
     djnz     r2,HEXTOASCII1
     xch     a,b
     add     a,#30H
     mov     @r1,a
      dec     r1
    djnz     r3,HEXTOASCII0
     mov     a,@r0
     add     a,#30H
     mov     @r1,a
ret
;*******************************************************************************************
如果不要ASCII,就add a,#30h不要了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

23

帖子

0

粉丝