【发布时间】:2021-02-16 19:39:41
【问题描述】:
我刚开始学习汇编,我很难理解如何将一个数组复制到另一个数组中。
例如,假设我有 2 个数组 J 和 K:
J 和 K 都包含 5 个元素,它们是 8 位宽的数字。
J = [0, 1, 2, 3, 4]
K = [5, 6, 7, 8, 9]
J 位于寄存器 1,K 位于寄存器 2
我将如何将 J“附加”/“复制”到 K? (如果这是正确的思考方式)
会不会是:
LDR R3, R1[0] ; placing 0th J element into register R3
MOV R2, R3 ; Moving the R3 element into the array K
....
....
....
这样继续,直到所有元素都被复制到数组 K 中
所以我试图获得的结果是一个数组,其中包含两个初始数组中的元素 result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我确信这是完全错误的,所以如果有人能够为我阐明这一点,将不胜感激!
【问题讨论】:
-
您需要
STR才能写入内存。既然你说你有 8 位宽的项目,你应该使用LDRB和STRB。此外,您还需要确保数组中有足够的空间,并且显然将元素写入正确的地址。 -
数组有固定的大小,除非你的意思是
K之前有空闲空间,你实际上并没有算作最初的 5 个元素的一部分。在 C 语言中,想想memcpy(K, J, 5)会为uint8_t J[5], K[5];做什么