Arm Load/Store指令


读取
.text
main:
mov r0, #9
@mov r5, buf 这样是读不了的
ldr r5,=buf
ldr r0,[r5] @[]相当于取指针
@ldrb 只读一个字节
main_end:
b main_end
.data
@char buf[] = {0x01,0x02,0x03,0x04}
buf:
.byte 0x01,0x02,0x03,0x04
.end写
.text
main:
mov r0, #9
@mov r5, buf 这样是读不了的
ldr r5,=buf
ldr r6,=dest_buf
ldr r0,[r5] @[]相当于取指针
@ldrb 只读一个字节
str r0,[r6] @取地址
main_end:
b main_end
.data
@char buf[] = {0x01,0x02,0x03,0x04}
buf:
.byte 0x01,0x02,0x03,0x04
dest_buf:
.space 8 @申请空间
.end
前后索引
ldr r0, [r1, #8] @先加 ++i
str r0,[r1],#4 @先使用后加 i++



测验

.text
main:
mov r5,#0
ldr r7,=buf
ldr r8,=destBuf
loop:
cmp r5,#3
beq main_end
add r5, #1
ldrb r0, [r7],#1
strb r0, [r8],#1
b loop
main_end:
b main_end
buf:
.byte 1,2,3
.data
dest_buf:
.space 8
.end