📄 custom_functions.s79
字号:
;------------------------------------------------------------------------------
;- ATMEL Microcontroller Software Support - ROUSSET -
;------------------------------------------------------------------------------
;- DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
;- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
;- DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
;- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
;- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
;- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
;- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;------------------------------------------------------------------------------
;- File source : Custom_Functions.s79
;- Object : User functions
;- 1.0 21/DEC/06 WG : Creation
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
PROGRAM ?Custom ;- Begins a program module
RSEG CODE:CODE (2) ;- Begins a relocatable segment
;- corresponding address is 32-bit aligned
CODE32 ;- ARM mode
;------------------------------------------------------------------------------
;- Custom Functions
;extern void Multi_Transfer (unsigned int Size,unsigned int Read_Address,unsigned Write_Address)
; return in interworking and AAPCS
; return in R0
;R0 = Size
;R1 = Read_Address
;R2 = Write_Address
;------------------------------------------------------------------------------
PUBLIC Multi_Transfer
Multi_Transfer
stmfd sp!, {r4-r7} ; Save R4, R5, R6 and R7 in User Stack
loop
ldmia r1!,{r4-r7} ; R4=*R1, R5=*(R1+4), R6=*(R1+8), R7=*(R1+12)
stmia r2!,{r4-r7} ; R2=R4, *(R2+4)=R5, *(R2+8)=R6, *(R2+12)=R7
subs r0,r0,#4 ; R0=R0-4 (4 address locations transfered at once)
bne loop ; If R0 != #0 goto loop
ldmia sp!, {r4-r7} ; Restore R4, R5, R6 and R7 registers from User Stack
bx r14 ; If R0 == #0 return
ENDMOD ; Terminates the assembly of the current module
END ; Terminates the assembly of the last module in a file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -