控制工程师论坛

教程与手册

原码有符号四节加法程序

xilinxue
xilinxue

2008-11-21

;原码有符号四节加法程序(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

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China