📄 copybuf.asm
字号:
;===========================================================================;=;= Copyright (C) 2006 MAXIM/Dallas Semiconductor Corporation. ;= All rights Reserved. Printed in U.S.A.;=;= Permission is hereby granted, free of charge, to any person obtaining a;= copy of this software and associated documentation files (the ;= "Software"), to deal in the Software without restriction, including;= without limitation the rights to use, copy, modify, merge, publish,;= distribute, sublicense, and/or sell copies of the Software, and to;= permit persons to whom the Software is furnished to do so, subject to;= the following conditions:;= ;= The above copyright notice and this permission notice shall be included;= in all copies or substantial portions of the Software source code.;= ;= THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS;= OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF;= MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.;= IN NO EVENT SHALL MAXIM/DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, ;= DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ;= OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ;= THE USE OR OTHER DEALINGS IN THE SOFTWARE.;=;= Except as contained in this notice, the name of MAXIM/Dallas ;= Semiconductor shall not be used except as stated in the MAXIM/Dallas ;= Semiconductor Branding Policy.;=;= Description: MAXQ2000 Secure Digital (SD) Card Interface via SPI;= ;= Filename: copybuf.asm;=;= Compiler: Rowley CrossWorks assembler;=;= Hardware: MAXQ2000 Evaluation Kit (Rev B);=;===========================================================================urom_copyBuffer EQU (0x84a2 << 1) public _asm_copybuffer; int A[7] asm_copybuffer(unsigned char *dstaddr A[7], const __code char *srcaddr A[6], int len A[5]);; Copy n bytes from flash into the provided RAM buffer code even_asm_copybuffer: move DPC, #0x00 ; All pointers in byte mode, DP[0] active move AP, #7 ; Point ACC to first argument, which is also ; where we will deposit the return value move BP, ACC ; No translation needed for RAM address move OFFS, #0 ; Destination in BP[Offs] move ACC, A[6] ; Set ACC to the flash src address or #0x8000 ; Translate address. In ROM execution, ; flash memory begins at 0x8000 move DP[0], ACC ; Source goes into DP[0] move ACC, A[5] ; Length is bytes to copy move LC[0], ACC ; and goes into LC[0] call urom_copyBuffer ; Call the Utility ROM helper function ; to execute the actual copy move DPC, #0x18 ; Restore DPC to the Rowley value ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -