找回密码
 立即注册
楼主: LA***

电工们的业余爱好

[复制链接]
  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4154

    积分

    荣誉版主

    积分
    4154
     楼主| 发表于 2024-3-20 21:34:40 | 显示全部楼层
    查表法 hex --> ascii ,  5个时钟周期(缺点, 太占内存)
           MOV      DPTR,#TAB_ASCII   // 1
           MOVC      A,@A+DPTR       // 4
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4154

    积分

    荣誉版主

    积分
    4154
     楼主| 发表于 2024-3-20 21:46:29 | 显示全部楼层
    本帖最后由 LAOXU 于 2024-3-20 21:50 编辑

    我写了一个, 最快 4个时钟周期,最慢 7个时钟周期,
          CJNE    A,#10,$+3   // 1/3
          JC      $+4         // 1/3
          ADD     A,#7        // 1
          ADD     A,#30H      // 1     

    最快时速度超查表法, 最慢时速度也超过标准法,   


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    119

    回帖

    657

    积分

    高级会员

    积分
    657
    发表于 2024-3-20 23:56:35 | 显示全部楼层
    LAOXU 发表于 2024-3-20 21:34
    查表法 hex --> ascii ,  5个时钟周期(缺点, 太占内存)
           MOV      DPTR,#TAB_ASCII   // 1
           MO ...

    要用MOVC A,@A+PC指令
    ADD A,#偏移
    MOVC A,@A+PC
    总共需要4个时钟,像这种核心算法,用空间换时间还是很有用的,也就多10个字节左右
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4154

    积分

    荣誉版主

    积分
    4154
     楼主| 发表于 2024-3-21 04:44:21 | 显示全部楼层
    早些年, 网上流传着 4位HEX --> BCD 快速算法 PK , 看谁写的程序速度最快代码最短.

    如有兴趣咱们来个 8位HEX --> BCD 算法 PK (这个工作量有点大),   
    R4R5R6R7(无符号 LONG, 高在先, HEX) --> ACCR4R5R6R7(高在先, BCD)

    要么来个简单一点的, HEX --> BCD 算法 常用的 除10 运算 ?  
    8位HEX / 10  (这个工作量小),  R4R5R6R7(无符号 LONG, 高在先, HEX) -->R4R5R6R7(商, 高在先), ACC(余数).
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:17
  • 签到天数: 173 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1367

    积分

    荣誉版主

    积分
    1367
    发表于 2024-3-21 05:53:15 | 显示全部楼层
    查表用到的数组,放在code空间,不占内存。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    2 小时前
  • 签到天数: 82 天

    [LV.6]常住居民II

    4

    主题

    495

    回帖

    1345

    积分

    金牌会员

    积分
    1345
    发表于 2024-3-21 07:56:21 | 显示全部楼层
    根据应用确定使用那种方法
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 158 天

    [LV.7]常住居民III

    0

    主题

    405

    回帖

    490

    积分

    中级会员

    积分
    490
    发表于 2024-3-21 08:00:20 | 显示全部楼层
    来膜拜各路大神
    靡不有初,鲜克有终
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-3-30 16:06
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    7

    主题

    17

    回帖

    215

    积分

    中级会员

    积分
    215
    发表于 2024-3-21 08:22:07 | 显示全部楼层
    来都来了,凑个热闹再走 :-)
    想问下,8位 mcu编程,有一个 2 字节组成的数字,想拆分出个、十、百、千、万位。

    目前是这样做的:
    低 8 位,先除以 100,余数再除以10,这样就把低 8 位表示的数字分离出个、十、百位了;
    高 8 位,如果不为0,那就循环它:
    每轮循环依次给分离出来的个、十、百位,分别加6、5、2.从个位开始加,大于等于10,则向前一位进位。

    接下来是实现。其中PASSEDSECONDSLOW和PASSEDSECONDSHIGH存储的是组成16位二进制的低、高8位;SECONDSDIGITS、SECONDSDIGITS +1、SECONDSDIGITS + 2、SECONDSDIGITS + 3和SECONDSDIGITS + 4存储分离出来的个、十、百、千和万位上不超过十进制9的数字:
    1. COMPSECONDSDIGITS:
    2.     MOV                A, PASSEDSECONDSLOW
    3.     MOV                B, #100D
    4.     DIV                AB
    5.     MOV                SECONDSDIGITS + 2, A
    6.        
    7.     MOV                A, B
    8.     MOV                B, #10D
    9.     DIV                AB
    10.     MOV                SECONDSDIGITS + 1, A
    11.     MOV                SECONDSDIGITS, B
    12.        
    13.     MOV                R7, PASSEDSECONDSHIGH
    14.     CJNE        R7, #00H, COMPSECONDSDIGITSLOOPL1
    15.     JMP                COMPSECONDSDIGITSEND
    16.     COMPSECONDSDIGITSLOOPL1:
    17.         MOV                A, #6D
    18.         ADD                A, SECONDSDIGITS
    19.         MOV                B, #10D
    20.         DIV                AB
    21.         MOV                SECONDSDIGITS, B
    22.         ADD                A, SECONDSDIGITS + 1
    23.         MOV                SECONDSDIGITS + 1, A
    24.                
    25.         MOV                A, #5D
    26.         ADD                A, SECONDSDIGITS + 1
    27.         MOV                B, #10D
    28.         DIV                AB
    29.         MOV                SECONDSDIGITS + 1, B
    30.         ADD                A, SECONDSDIGITS + 2
    31.         MOV                SECONDSDIGITS + 2, A
    32.                
    33.         MOV                SECONDSDIGITS + 3, #00H
    34.         MOV                A, #2D
    35.         ADD                A, SECONDSDIGITS + 2
    36.         MOV                B, #10D
    37.         DIV                AB
    38.         MOV                SECONDSDIGITS + 2, B
    39.         ADD                A, SECONDSDIGITS + 3
    40.         MOV                SECONDSDIGITS + 3, A
    41.                
    42.         MOV                SECONDSDIGITS + 4, #00H
    43.         MOV                A, SECONDSDIGITS + 3
    44.         MOV                B, #10D
    45.         DIV                AB
    46.         MOV                SECONDSDIGITS + 3, B
    47.         MOV                SECONDSDIGITS + 4, A
    48.         DJNZ        R7, COMPSECONDSDIGITSLOOPL1
    49.         COMPSECONDSDIGITSEND:
    50.             RET
    复制代码


    点评

    8 位 HEX 是 4字节 (LONG) , 你这个算法速度太慢了, 例举的2字节已慢, 4字节要循环多少次啊? 不合适  详情 回复 发表于 2024-3-21 13:38
    知道你很急,但是你先别急
    你随时可以走,但是现在不能走
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 17:47
  • 签到天数: 56 天

    [LV.5]常住居民I

    15

    主题

    222

    回帖

    1201

    积分

    金牌会员

    积分
    1201
    发表于 2024-3-21 08:32:01 | 显示全部楼层
    说实话,我从小就喜欢和电有关的东西,好像真的不是为了钱,单纯的爱好,不是干这行的却有万用表、示波器、频率计,对任何电器都会去琢磨他的控制原理,虽然学的不深,但就是爱这玩意儿!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2 小时前
  • 签到天数: 112 天

    [LV.6]常住居民II

    10

    主题

    583

    回帖

    934

    积分

    高级会员

    积分
    934
    发表于 2024-3-21 08:32:59 | 显示全部楼层
    搞汇编代码确实有意思
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 10:45 , Processed in 0.125202 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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