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

📄 myclib.msa

📁 Actions ucOS-II mp3方案源码,可以做参考
💻 MSA
📖 第 1 页 / 共 5 页
字号:
?BF_MASKED_ST_L10:        //----------------------//
    ld    c,(ix+1)
    ld    b,(ix+2)
    ld    a,e
    and   c
    ld    e,a
    ld    a,d
    and   b
    ld    d,a
    ld    a,b
    cpl
    and   (hl)
    or    d
    ld    (hl),a
    dec   hl
    ld    a,c
    cpl
    and   (hl)
    or    e
    ld    (hl),a
    ret 

/*?BF_S_RET_VAL2_L10
    call    ?BF_MASKED_ST_L10
    pop    de
    ld    a,e
    and    c
    ld    e,a
    ld    a,d
    and    b
    ld    d,a
    jr    BF_S_RET_VAL2_L10_0*/
    
/******************************************************************************/
?BF_S_RET_VAL_L10:        //----------------------//
            call    ?BF_MASKED_ST_L10
            jp      ?MY_BF_S_RET_VAL_L10
            
/******************************************************************************/           
?MY_BF_S_RET_VAL_L10:        //----------------------//
    ld    c,(ix+0)
    bit    7,c
    jr    z,BF_S_RET_VAL_L10_0
    ld    a,c
    and    0fh
    ld    b,a
    bit    6,c
    jr    z,BF_S_RET_VAL_L10_1
    call    ?BF_SS_EXT_L10
    call    ?SS_RSH_L02
    ld    b,d
    ld    c,e
    pop    hl
    jp    BF_S_RET_VAL_L10_2
BF_S_RET_VAL_L10_1    
    call    ?US_RSH_L02
    ld    b,d
    ld    c,e
    pop    hl
    jp    BF_S_RET_VAL_L10_2
BF_S_RET_VAL_L10_0    
    pop    bc
BF_S_RET_VAL_L10_2    
    pop    af
    pop    hl
    pop    de
    pop    ix
    ex    de,hl
    ex    (sp),hl
    ex    de,hl
    ret    

/******************************************************************************/
?SC_DIV_L01:        //----------------------//
    push    bc
    push    de
    ld    c,a
    xor    a
    call    ?C_FIND_SIGN_L01
    push    af
    call    ?C_DIVMOD_L01
    pop    af
    or    a
    ld    a,c
    jr    z,SC_DIV_L01_0
    inc    a
    jr    SC_DIV_L01_1
SC_DIV_L01_0
    xor    0ffh
SC_DIV_L01_1    
    pop    de
    pop    bc
    ret

/******************************************************************************/
?UC_DIV_L01:        //----------------------//
    push    bc
    push    de
    ld    c,a
    call    ?C_DIVMOD_L01
    ld       a,c             
    xor    0ffh
    pop    de
    pop    bc
    ret
    
/******************************************************************************/
?US_DIV_L02:        //----------------------//
    push    af
    push    hl
    call    ?S_DIVMOD_L02
    ld    a,e
    cpl
    ld    e,a
    ld    a,d
    cpl
    ld    d,a
    pop    hl
    pop    af
    ret
    
/******************************************************************************/
?US_DIVASG_L02:        //----------------------//
    ld    e,(hl)
    inc    hl
    ld    d,(hl)
    call    ?US_DIV_L02
    ld    (hl),d
    dec    hl
    ld    (hl),e
    ret

/******************************************************************************/
?SS_DIV_L02:        //----------------------//
    push    af
    push    bc
    push    hl
    xor    a
    call    ?S_FIND_SIGN_L02
    push    af
    call    ?S_DIVMOD_L02
    pop    af
    or    a
    jr    z,SS_DIV_L02_0
    inc    de
    jr    SS_DIV_L02_1
SS_DIV_L02_0    
    ld    a,e
    cpl
    ld      e,a
    ld    a,d
    cpl
    ld      d,a
SS_DIV_L02_1    
    pop    hl
    pop    bc
    pop    af
    ret
    
/******************************************************************************/
?S_FIND_SIGN_L02:        //----------------------//
    bit    7,b
    jr    z,S_FIND_SIGN_L02_0
    xor    a
    sub    c
    ld    c,a
    ld    a,0
    sbc    a,b
    ld    b,a
    ld    a,1
S_FIND_SIGN_L02_0            
    bit    7,d
    ret    z
    push    af
    xor    a
    sub    e
    ld    e,a
    ld    a,0
    sbc    a,d
    ld    d,a
    pop    af
    xor    1
    ret

/******************************************************************************/
?SS_DIVASG_L02:        //----------------------//
    ld    e,(hl)
    inc    hl
    ld    d,(hl)
    call    ?SS_DIV_L02
    ld    (hl),d
    dec    hl
    ld    (hl),e
    ret
    
/******************************************************************************/
?SL_DIVASG_L03:        //----------------------//
    push    bc
    push    de
    ld    e,(hl)
    inc    hl
    ld    d,(hl)
    inc    hl
    ld    c,(hl)
    inc    hl
    ld    b,(hl)
    ex    de,hl
    call    ?SL_DIV_L03
    JP      ?L_END_MULDIVASG_L03

/******************************************************************************/
?SL_DIV_L03:        //----------------------//
    ex    de,hl
    ex    (sp),hl
    push    af
    push    ix
    ld    ix,0
    add    ix,sp
    push    bc
    push    de
    ld    d,(ix+9)
    ld    (ix+9),h
    ld    e,(ix+8)
    ld    (ix+8),l
    xor    a
    call    ?L_FIND_SIGN_L03
    call    ?L_DIVMOD_L03
    pop    hl
    pop    bc
    or    a
    call    z,?L_NOT_L03
    call    nz,?L_INC_L03
    pop    ix
    pop    af
    pop    de
    inc    sp
    inc    sp
    ret
    
/******************************************************************************/
?UL_DIVASG_L03:        //----------------------//
    push    bc
    push    de
    ld    e,(hl)
    inc    hl
    ld    d,(hl)
    inc    hl
    ld    c,(hl)
    inc    hl
    ld    b,(hl)
    ex    de,hl
    call    ?UL_DIV_L03
    JP      ?L_END_MULDIVASG_L03
    
/******************************************************************************/
?UL_DIV_L03:    //----------------------//
    ex    de,hl
    ex    (sp),hl
    push    af
    push    ix
    ld    ix,0
    add    ix,sp
    push    bc
    push    de
    ld    d,(ix+9)
    ld    (ix+9),h
    ld    e,(ix+8)
    ld    (ix+8),l
    call    ?L_DIVMOD_L03
    pop    hl
    pop    bc
    call    ?L_NOT_L03
    pop    ix
    pop    af
    pop    de
    inc    sp
    inc    sp
    ret

/******************************************************************************/
?C_V_SWITCH_L06:        //----------------------//
    ex      (sp),hl
    push    af
    push    bc
    ld      c,(hl)
    inc     hl
    ld      b,(hl)
    inc     hl
    ld      a,e
    cpir
    jr      nz,C_V_SWITCH_L06_0
    inc     hl
    inc     hl
C_V_SWITCH_L06_0
    add     hl,bc
    jp      ?V_SWITCH_END_L06
/******************************************************************************/
?V_SWITCH_END_L06:       
    add     hl,bc
    add     hl,bc
    ld      a,(hl)
    inc     hl
    ld      h,(hl)
    ld      l,a
    pop     bc
    pop     af
    ex      (sp),hl
    ret
/******************************************************************************/
?C_S_SWITCH_L06        
    ex      (sp),hl
    push    af
    push    de
    ld      d,0
    ld      a,e
    sub     (hl)
    inc     hl
    ld      e,a
    sub     (hl)
    inc     hl
    ld      a,d
    sbc     a,(hl)
    inc     hl
    jr      nc,C_S_SWITCH_L06_0
    ex      de,hl
    inc     hl
    add     hl,hl
    add     hl,de
C_S_SWITCH_L06_0:        
    ld      e,(hl)
    inc     hl
    ld      d,(hl)
    ex      de,hl
    pop     de
    pop     af
    ex      (sp),hl
    ret        
                
/******************************************************************************/
?ENT_PARM_DIRECT_L09:
    pop     hl
    push    bc
    push    de
    push    ix
    ld      ix,0
    add     ix,sp
    jp      (hl)
       
/******************************************************************************/
?LEAVE_DIRECT_L09:
    ld      sp,ix
    pop     ix
    pop     de
    pop     bc
    ret
      
/******************************************************************************/
?MONITOR_LEAVE_IX_L09:        
    pop     af
    ld      sp,ix
    pop     ix
    ret     po
    ei
    ret
/******************************************************************************/
?STRCPY_L11:
    push    af
    push    hl
    push    de
    push    bc
    xor     a
    ex      de,hl
STRCPY_L11_l0        
    cp      (hl)
    ldi
    jr      nz,STRCPY_L11_l0
    pop     bc
    pop     de
    pop     hl
    pop     af
    ret
/******************************************************************************/
?MEMSET_L11:        
    push    af
    push    hl
    push    de
    ld      a,b
    or      c
    jr      z,MEMSET_L11_l0
    ld      a,l
    ld      (de),a
    dec     bc
    ld      a,b
    or      c
    jr      z,MEMSET_L11_l0
    ld      l,e
    ld      h,d
    inc     de
    ldir
MEMSET_L11_l0        
    pop     de
    pop     hl
    pop     af
    ret
/******************************************************************************/
?MONITOR_LEAVE_IX_PA_L09:
    ld      h,a
    pop     af
    ld      a,h
    ld      sp,ix
    pop     ix
    ret     po
    ei
    ret
/******************************************************************************/
memmove:
    push    ix
    ld      ix,0
    add     ix,sp

    push    bc
    push    de
    ld      l,c
    ld      h,b
    ld      c,(ix+4)
    ld      b,(ix+5)
    ldir
    pop     de
    pop     bc

    pop     ix
    ret
    

//added  by vicky 20040816
/******************************************************************************/
?L_DEC_L03:     //----------------------//
    push     af
    ld       a,l
    or       h
    dec      hl
    jr       nz,L_DEC_L03_0
    dec      bc
L_DEC_L03_0
    pop      af
    ret 
    
/******************************************************************************/
?S_S_SWITCH_L06:     //----------------------//  
    ex       (sp),hl
    push     af
    push     de 
    ld       a,e
    sub      (hl)
    inc      hl
    ld       e,a
    ld       a,d
    sbc      a,(hl)
    inc      hl
    ld       d,a
    ld       a,e
    sub      (hl)
    inc      hl
    ld       a,d
    sbc      a,(hl)
    inc      hl
    jp       ?S_SWITCH_END_L06
    
/******************************************************************************/
?S_SWITCH_END_L06:     //----------------------//  
    jr       nc,S_SWITCH_END_L06_0
    ex       de,hl
    inc      hl
    add      hl,hl
    add      hl,de
S_SWITCH_END_L06_0
    ld       e,(hl)
    inc      hl
    ld       d,(hl)
    ex       de,hl
    pop      de 
    pop      af
    ex       (sp),hl
    ret
    
/******************************************************************************/
?S_V_SWITCH_L06:     //----------------------//
    ex       (sp),hl
    push     af
    push     bc
    ld       c,(hl)
    inc      hl
    ld       b,(hl)
S_V_SWITCH_L06_0
    inc      hl
    ld       a,b
    or       c
    jr       z,S_V_SWITCH_L06_1
    dec      bc
    ld       a,e
    sub      (hl)
    inc      hl
    jr       nz,S_V_SWITCH_L06_0
    ld       a,d
    sub      (hl)
    jr       nz,S_V_SWITCH_L06_0
    inc      hl
    inc      hl
    inc      hl
S_V_SWITCH_L06_1    
    add      hl,bc
    add      hl,bc
    jp       ?V_SWITCH_END_L06
     
/******************************************************************************/
?MEMCMP_L11:     //----------------------//
    push     af
    push     bc 
    push     de
    ld       a,c
    or       b
    jr       z,MEMCMP_L11_1
MEMCMP_L11_0    
    ld       a,(de)
    cpi
    jr       nz,MEMCMP_L11_2
    inc      de 
    jp       pe,MEMCMP_L11_0
MEMCMP_L11_1    
    ld       hl,0
    jr       MEMCMP_L11_3
MEMCMP_L11_2    
    push     af
    pop      hl
    ld       h,l
MEMCMP_L11_3    
    pop      de
    pop      bc 
    pop      af
    ret
     
/******************************************************************************/
?STRCMP_L11:     //----------------------//
    push     af
    push     de
STRCMP_L11_0    
    ld       a,(de)
    cp       (hl)
    jr       nz,STRCMP_L11_1    
    inc      de
    inc      hl
    or       a
    jr       nz,STRCMP_L11_0
    ld       hl,0
    defb     11

⌨️ 快捷键说明

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