⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3c9488agg.src

📁 s3c9488算术运算程序
💻 SRC
字号:
    ACCAHI   ACCALO
;   *      ACCBHI   ACCBLO
;-------------------------
;          AHI,ALO,BHI,BLO
DD_MULT:
           CLR       ACCCHI
           CLR       ACCCLO         
           LD        R8,#16            
           LD        R9,ACCBHI
           LD        R10,ACCBLO
           CLR       ACCBHI
           CLR       ACCBLO
           RCF     
COMUT:     RRC       R9
           RRC       R10
           JR        NC,NEXT_P1
           ADD       ACCBLO,ACCALO
           ADC       ACCBHI,ACCAHI
NEXT_P1:   RRC       ACCBHI
           RRC       ACCBLO
           RRC       ACCCHI
           RRC       ACCCLO             
           DEC       R8
           JR        NZ,COMUT
           LD        ACCAHI,ACCBHI
           LD        ACCALO,ACCBLO           
           LD        ACCBHI,ACCCHI
           LD        ACCBLO,ACCCLO
           RET                    

 

;    ACCAHI  ACCALO    ACCBHI  ACCBLO
;  /                   ACCCHI  ACCCLO
;---------------------------------
;                    ACCAHI  ACCALO
;功能描述:       双字除法  AB/C
DD_DIV:         LD     R2,#16
                CP     ACCCHI,#00H
                JR     NE,SURE_DIV
                CP     ACCCLO,#00H
                JR     NE,SURE_DIV
                CLR    ACCAHI
                CLR    ACCALO
                RET
SURE_DIV:   
DIVD2:          RCF
                RLC    ACCBLO
                RLC    ACCBHI
                RLC    ACCALO
                RLC    ACCAHI               
                JR     C,NOT_MATHC
                OR     SYSTEM_FLAG,#MATHC                                                      
                JR     SUB_SURE                
NOT_MATHC:      AND    SYSTEM_FLAG,#MATHC_CLR

SUB_SURE:
                RCF
                LD     R1,ACCALO
                SUB    R1,ACCCLO
                LD     R0,ACCAHI
                SBC    R0,ACCCHI
                JR     C,IF_DIVD3
                
NODIVD3:        LD     ACCAHI,R0
                LD     ACCALO,R1
                INC    ACCBLO
                JR     DIVD3 
IF_DIVD3:       TM     SYSTEM_FLAG,#MATHC
                JR     Z,NODIVD3
DIVD3:          DEC    R2                                         
                JR     NZ,DIVD2
                LD     ACCAHI,ACCBHI
                LD     ACCALO,ACCBLO 
                RET 


;数制转换 
;*********************************************************************************
;NAME:   HEX2B_TOBCD
;INPUT:   R11(H),R10(L)(HEX)
;FUNCTION:  双字节十六进制数转换为BCD

;USING RESOURCE: R1,R0,R7,R4,R3,R5
;OUTPUT:  R5,R4,R3,R2,R1
;*********************************************************************************
HEX_BCD: 
               CLR      R5
               CLR      R4
               CLR      R3
               CLR      R2
               CLR      R1
               LD       R7,R10
               LD       R8,R11
               LD       R9,#27H                                 
LOOP_10000:    SUB      R7,#10H
               SBC      R8,R9
               JR       C,LOOP_10000_ADD
               INC      R5
               JR       LOOP_10000                              
LOOP_10000_ADD:ADD      R7,#10H
               ADC      R8,#27H
               LD       R9,#03H
LOOP_1000:     SUB      R7,#0E8H
               SBC      R8,R9
               JR       C,LOOP_1000_ADD
               INC      R4
               JR      LOOP_1000
LOOP_1000_ADD: ADD      R7,#0E8H  
               ADC      R8,#03H
               LD       R9,#00H
LOOP_100:      SUB      R7,#64H
               SBC      R8,R9
               JR       C,LOOP_100_ADD
               INC      R3
               JR       LOOP_100                                         
LOOP_100_ADD:  ADD      R7,#64H               
LOOP_10:       SUB      R7,#0AH
               LD       R8,R7                 
               JR       C,LOOP_10_ADD
               INC      R2
               JR       LOOP_10
LOOP_10_ADD:   ADD      R7,#0AH
               LD       R1,R7
               RET      
               
DB_SUB:
                SCF
                SUB     ACCALO,ACCBLO
                SBC     ACCAHI,ACCBHI
                RET
                                             
;R0R1 COMPARE WITH  R2R3
;If R0R1>=R2R3   C="0" else c="1"

DB_CMP:         CP    R0,R2
                JR    ULT,CMP_SETC                
                JR    UGT,CMP_CLRC
                CP    R1,R3
                JR    UGE,CMP_CLRC                
CMP_SETC:       SCF
                JR    CMP_OVER
CMP_CLRC:       RCF                      
CMP_OVER:
                RET          


READ_ROM:     
               ;DEC     BUFF_PT 
               LD      R2,BUFF_PT
               RL      R2
               ADD     R1,R2
               LDC     R2,@RR0
               LD      ACCAHI,R2
               INC     R1
               LDC     R2,@RR0
               LD      ACCALO,R2
               RET    

;INPUT     R8
;OUTPUT    R8               
SWAPDATA:      RR      R8
               RR      R8
               RR      R8
               RR      R8
               RET 
READ_BUFF:
                LD              R1,BUFF_POINT
                LD              R3,#DATA_BUFFER
                ADD             R3,R1
                LD              ACCBLO,@R3
                NOP
                INC             R1
                LD              R3,#DATA_BUFFER
                ADD             R3,R1
                LD              ACCBHI,@R3
                RET
WRITE_BUFF:
                LD              R1,BUFF_POINT
                LD              R3,#DATA_BUFFER
                ADD              R3,R1
               
                LD              @R3, ACCBLO
                NOP
                INC             R1
                LD              R3,#DATA_BUFFER
                ADD             R3,R1
                LD              @R3, ACCBHI
                RET 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;C=1     B<A
;C=0,MATHC=0  B>A
;MATHC=A     B="A"


ASK_MIN:
                LD              ACCAHI,#0FFH
                LD              ACCALO,#0FFH
ASK_MIN_NEXT:
                CALL            READ_BUFF
                CP              ACCBHI,#0
                JR              NZ,COMP_SURE
                CP              ACCBLO,#0
                JR              Z,THIS_MIN                
                
COMP_SURE:      LD              R0,ACCAHI
                LD              R1,ACCALO
                LD              R2,ACCBHI
                LD              R3,ACCBLO
                CALL            DB_CMP 
                JR              C,MIN_NEXT_PT
THIS_MIN:                
                LD              ACCAHI,ACCBHI
                LD              ACCALO,ACCBLO 
                LD              MIN_PT,BUFF_POINT 
MIN_NEXT_PT:
                INC             BUFF_POINT
                INC             BUFF_POINT
                CP              BUFF_POINT,#22
                JR              ULE,ASK_MIN_NEXT
                RET
;------------------------------------
SORT:      
                CLR      LOOP_CNT                  
SORT_NEXT:       
                 
                 LD      BUFF_POINT,LOOP_CNT  
                 CALL    ASK_MIN                            
                 LD      BUFF_POINT,LOOP_CNT
                 CALL    READ_BUFF
                 LD      ACCALO,ACCBLO
                 LD      ACCAHI,ACCBHI
                 LD      BUFF_POINT,MIN_PT
                 CALL    READ_BUFF
                 LD      BUFF_POINT,LOOP_CNT
                 CALL    WRITE_BUFF
                 LD      BUFF_POINT,MIN_PT
                 LD      ACCBHI,ACCAHI    
                 LD      ACCBLO,ACCALO
                 CALL    WRITE_BUFF
                 NOP
                 INC     LOOP_CNT
                 INC     LOOP_CNT
                 CP      LOOP_CNT,#22
                 JR      ULT,SORT_NEXT
SORT_ADBUF_OVER:           
                RET 
                                        
;DELAY ABOAT 1MS                
DELAYXMS:
                LD              R0,#0B0H
ECHO_FILTER:
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                DEC             R0            
                JR              NZ,ECHO_FILTER           
                RET
                
                ;DELAY 100MS
DELAY100MS:
                LD              R9,#80
DELAY100MS_LOOP:
                CALL            DELAYXMS
                DEC             R9
                JR              NZ,DELAY100MS_LOOP
                RET
DELAY1S:
                CALL            DELAY100MS
                CALL            DELAY100MS
                CALL            DELAY100MS
                CALL            DELAY100MS
                RET
DELAY_20MS:
                LD              R9,#20
DELAY_20MS_LOOP:
                CALL            DELAYXMS
                DEC             R9
                JR              NZ,DELAY_20MS_LOOP
                RET    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -