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

📄 ppmemcpy.asm

📁 2407嵌入式系统程序(c语言)
💻 ASM
字号:
; void ppmemcpy(void *pmemdst[], void *pmemsrc[], unsigned int N);
; This function copies N words from pmemsrc in program memory to pmemdst in program memory
; and returns a pointer to pmemdst

	.text
	.def	_ppmemcpy


;
; Start Of Main Code:
;

_ppmemcpy:
	sbrk #1

	; Local variables (and parameters) will be set up as follows:
	;
	; get arguments and place them properly - take the from the
	; software stack and place them into their correct positions
AR_SAVE .set ar2
AR_PSRC .set ar3
AR_PDST .set ar4
AR_N .set ar5

NUM_PARAMS .set 3 ; Number of calling parameters
	lar AR_SAVE,*
	lar AR_PDST,*- 
	lar AR_PSRC,*-
	lar AR_N,*-,AR_N
	mar *-,ar1 ; AR_N--
	adrk #6+1 ; ar1 = next empty point on stack + 1
	sar AR_PSRC,*+ ; stack[1]=&pmem1[0]
	sar AR_PDST,*- ; stack[2]=&pmem2[0]
;	rpt *,AR_D 
LOOP:
	lacl *- ; acc=stack[1]=&pmem1[i]
	tblr *+ ; stack[0]=*pmem1[i]
	add #1  ; i++
	sacl *+ ; stack[1]=&pmem1[i]
	
	lacl *- ; acc=stack[2]=&pmem2[i] 
	mar *-
	tblw *+ ; pmem2[i]=pmem1[i]
	add #1  ; i++
	mar *+
	sacl *-,AR_N ; stack[2]=&pmem2[i]
	banz LOOP,ar1	
	sar AR_SAVE,*
	lacl *	; Return pointer
	sbrk #3
	ret

⌨️ 快捷键说明

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