8051中最有效的内存块传输技术

时间:2018-06-01 17:48:31

标签: pointers memory memory-management 8051 copying

我在8051中创建了自己的系统,其中必须将内存中的一串数据(连续空格中的字节)从一个内存位置复制到另一个内存位置。目前我的块是五个字节。

这些是我到目前为止所想到的代码片段。每个人都完成同样的任务:

; For each idea, SRC = memory location 30h, DEST = memory location 40h

; Idea 1: direct copy byte for byte.
; Seems to use lots of clock cycles and code space?

  mov DEST,SRC
  mov DEST+1,SRC+1
  mov DEST+2,SRC+2
  mov DEST+3,SRC+3
  mov DEST+4,SRC+4

; Idea 2: Stack by pushing data

  mov A,SP ;save SP
  mov SP,#DEST-1
  push SRC
  push SRC+1
  push SRC+2
  push SRC+3
  push SRC+4
  mov SP,A ;restore SP

; Idea 3: Stack by popping data

  mov A,SP ;save SP
  mov SP,#SRC+4
  pop DEST+4
  pop DEST+3
  pop DEST+2
  pop DEST+1
  pop DEST
  mov SP,A ;restore SP

; Idea 4: Double pointers

  mov R0,#SRC
  mov R1,#DEST
  copyagain:
    mov A,@R0
    inc R0
    mov @R1,A
    inc R1
  cjne R1,#DEST+5,copyagain

在使用最少数量的时钟周期和所需的ROM空间方面,哪种传输内存块最有效的内存传输方法?如果上述代码片段都不好,那么我应该使用什么代码片段呢?

此外,传输发生在内存的前128个字节内,并在AT89C2051微控制器上完成。

我不在乎内存中的内容是否被复制或移动到新位置,只要它们出现在新位置。

0 个答案:

没有答案