📄 ppmemcpy.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 + -