您的位置:控制工程论坛网论坛 » 教程与手册 » 原码有符号四节加法程序

xilinxue

xilinxue   |   当前状态:在线

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

注册时间: 2008-06-26

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

空间 发短消息加为好友

原码有符号四节加法程序

xilinxue  发表于 2008/11/21 18:51:59      996 查看 1 回复  [上一主题]  [下一主题]

手机阅读

;原码有符号四节加法程序(R0R1R2R3+R4R5R6R7)=(R0R1R2R3)
;占用资源:ACC,SR0,NADDN,NSUBN,NCMPT
;堆栈需求:4字节
;入口    :R0,R1,R2,R3,R4,R5,R6,R7
;出口    :R0,R1,R2,R3,CF
NDADD:   MOV    A,@R0
          MOV    C,ACC.7
          MOV    SR0,C
          XRL    A,R4
          MOV    C,ACC.7
          MOV    A,@R0
          CLR    ACC.7
          MOV    @R0,A
          MOV    A,R4
          CLR    ACC.7
          MOV    R4,A
          JC     DAB2
          LCALL  NADDN
          MOV    A,@R0
          JB     ACC.7,DABE
DAB1:     MOV    C,SR0
          MOV    ACC.7,C
          MOV    @R0,A
          CLR    OV
          RET
DABE:   SETB   OV
          RET
DAB2:   LCALL  NSUBN
          MOV    A,@R0
          JNB    ACC.7,DAB1
          LCALL  CMPT
          CPL    SR0
          SJMP   DAB1
;原码有符号四节减法程序(R0R1R2R3-R4R5R6R7)=(R0R1R2R3)
;占用资源:ACC,SR0,NADDN,NSUBN,NCMPT
;堆栈需求:4字节
;入口    :R0,R1,R2,R3,R4,R5,R6,R7
;出口    :R0,R1,R2,R3,CF
NDSUB:   MOV    A,@R4
          CPL    ACC.7
          MOV    R4,A
          LCALL  NDADD
          RET
;双字节无符号数加法程序 (R0R1R2R3+R4R5R6R7)=(R0R1R2R3)
;入口    :R0,R1,R2,R3,R4,R5,R6,R7
;占用资源:ACC
;堆栈需求:2字节
;出口    :R0,R1,R2,R3,CF
NADDN:    MOV    A,R3
          ADD    A,R7
          MOV    R3,A
          MOV    A,R2
          ADDC   A,R6
          MOV    R2,A
   MOV  A,@R1
   ADDC  A,R5
   MOV  @R1,A
   MOV  A,@R0
   ADDC  A,R4
   MOV  @R0,A
          RET

;4字节无符号数减法程序 (R0R1R2R3-R4R5R6R7)=(R0R1R2R3)
;入口    :R0,R1,R2,R3,R4,R5,R6,R7
;占用资源:ACC
;堆栈需求:2字节
;出口    :R0,R1,R2,R3,CF
NSUBN:    CLR    C
   MOV    A,R3
          SUBB   A,R7
          MOV    R3,A
          MOV    A,R2
          SUBB   A,R6
          MOV    R2,A
   MOV    A,@R1
          SUBB   A,R5
          MOV    @R1,A
          MOV    A,@R0
          SUBB   A,R4
          MOV    @R0,A
          RET
;双字节取补程序 /(R0R1R2R3)=(R0R1R2R3)
;入口    :R0,R1,R2,R3
;占用资源:ACC
;堆栈需求:2字节
;出口    :R0,R1,R2,R3
NCMPT:   MOV    A,R3
          CPL    A
          ADD    A,#01H
          MOV    R3,A
          MOV    A,R2
          CPL    A
          ADDC   A,#00H
          MOV    R2,A
          MOV    A,@R1
          CPL    A
          ADDC   A,#00H
          MOV    @R1,A
          MOV    A,@R0
          CPL    A
          ADDC   A,#00H
          MOV    @R0,A
          RET

1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

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

    注册时间: 2008-06-26

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

    空间 发短消息加为好友

    xilinxue   发表于 2008/11/21 18:51:59

     希望大虾们能提供更好点的4字节加法程序,非常的感谢大家都出来交流交流
    2楼 回复本楼

    引用 xilinxue 2008/11/21 18:51:59 发表于2楼的内容

总共 , 当前 /