您的位置:控制工程论坛网论坛 » 自动化软件 » 3字节的BCD转3字节的HEX

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

3字节的BCD转3字节的HEX

xilinxue  发表于 2008/11/1 20:27:42      1786 查看 2 回复  [上一主题]  [下一主题]

手机阅读

BCD_TEMP_1 EQU 30H
BCD_TEMP_2 EQU 31H
BCD_TEMP_3 EQU 32H

 

 

BCD_HEX_1:
 MOV B,#10H ;分离十位和个位
 DIV AB
 MOV R5,B ;暂存个位
 MOV B,#10 ;将十位转换成十六进制
 MUL AB
 ADD A,R5 ;按十六进制加上个位
 RET
BH2功能 : 三字节BCD码整数转换成三字节十六进制整数
入口条件: 待转换的三字节BCD码整数在30H,31H,32H中。
出口信息: 转换后的三字节十六进制整数仍在30H,31H,32H中。
BCD_HEX_3:
 MOV A,BCD_TEMP_1  ;将低字节转换成十六进制
 LCALL BCD_HEX_1
 MOV BCD_TEMP_1,A
 MOV A,BCD_TEMP_2 ;将高字节转换成十六进制
 LCALL BCD_HEX_1
 MOV B,#100  ;扩大一百倍
 MUL AB
 ADD A,BCD_TEMP_1 ;和低字节按十六进制相加
 MOV BCD_TEMP_1,A
 CLR A
 ADDC A,B
 MOV BCD_TEMP_2,A
 MOV R7,BCD_TEMP_3 ;扩大一万倍
 MOV R4,#10H
 MOV R3,#27H
 LCALL NMUL21  ;单字节无符号数乘法程序,结果在R2R3R4
 MOV R7,BCD_TEMP_1
 MOV R6,BCD_TEMP_2
 MOV R5,#00H
 LCALL NADD3  ;和低双字节按十六进制相加
 MOV BCD_TEMP_1,R4
 MOV BCD_TEMP_2,R3
 MOV BCD_TEMP_3,R2
 RET

;三字节无符号数加法程序 (R2R3R4+R5R6R7)=(R2R3R4)
;入口    :R2,R3,R4,R5,R6,R7
;占用资源:ACC
;堆栈需求:2字节
;出口    :R2,R3,R4,CF
NADD3:    MOV    A,R4
          ADD    A,R7
          MOV    R4,A
          MOV    A,R3
          ADDC   A,R6
          MOV    R3,A
   MOV  A,R2
   ADDC  A,R5
   MOV  R2,A
          RET

;单字节无符号数乘法程序 (R3R4*R7)=(R2R3R4)
;入口    :R3,R4,R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口    :R2,R3,R4
NMUL21   :MOV    A,R4
          MOV    B,R7
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,R7
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,B
          MOV    R2,A
          CLR    OV
          RET

1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2008/10/30 18:25:28

     如果你想要4字节或者更多,或者2字节,只需要继续添加就可以了,有兴趣做优化的朋友希望大家一起做个交流
    2楼 回复本楼

    引用 xilinxue 2008/10/30 18:25:28 发表于2楼的内容

  • 疯狂太少

    疯狂太少   |   当前状态:离线

    总积分:114  2024年可用积分:0

    注册时间: 2008-09-30

    最后登录时间: 2009-02-13

    空间 发短消息加为好友

    疯狂太少   发表于 2008/11/1 20:27:42

    3楼 回复本楼

    引用 疯狂太少 2008/11/1 20:27:42 发表于3楼的内容

总共 , 当前 /