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

📄 memset.asm

📁 基于56F8346的异步电机VVVF控制程序。
💻 ASM
字号:
;********************************************************************
;
; (c) Freescale Semiconductor
; 2004 All Rights Reserved
;
;********************************************************************
                SECTION rtlib

    include "portasm.h"

    GLOBAL  FmemMemset

; void  * memMemset (void *dest, int c, size_t count);
; #pragma interrupt  /* Can be called from a pragma interrupt ISR */
;
;    Register usage:
;       R2 - dest, byte address pointer
;       Y0 - c
;       Y1 - count
;
      ORG  P:
FmemMemset:

      adda    #2,SP
      move.w  X0,x:(SP)   ; Save X0 to restore later

      tst.w   Y1          ; Q: count > 0 ?
      beq     EndMemset
      nop
      nop

      brclr   #$0001,R2,AddrEven
      nop
      nop
      move.bp Y0,x:(R2)+  ; move one byte
      dec.w   Y1
AddrEven:
      asra    R2          ; create word address
      move.w  Y0,X0       ; create 16-bit data value
      asll.w  #8,X0
      andc    #$00FF,Y0
      or.w    X0,Y0
      move.w  Y1,X0       ; create word count
      lsr.w   X0
      rep     X0          ; move words
      move.w  Y0,X:(R2)+

      asla    R2,R2       ; restore byte address

      brclr   #$0001,Y1,EndMemset  ; Q: Odd byte?
      move.bp Y0,x:(R2)+  ;
EndMemset:
      ; R2 - Contains *dest return value
      move.w  x:(SP),X0  ; Restore X0 register
      suba    #2,SP
      rts

      ENDSEC
      END

⌨️ 快捷键说明

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