我正在尝试在ARM Assembly中实现声音延迟。我在数据源数组中有一个点的列表点,该点生成一个方波。该数组的大小为60000字节,每个点存储为半字。原始声音是从0 16000点开始的,并且delay正在将新点从16000写入22000,并且delay2正在将新点从22000写入30000。我没有得到延迟的声音,也无法弄清为什么。
soundStored:
mov r8, 0
mov r6, 22000
mov r10, 16000
b delay
delay:
mov r1, 4
cmp r10, r6
beq soundDelayed
ldr r9, =array
lsl r8, r7, 1
add r8, r9, r8
ldrh r0, [r8]
lsl r11, r10, 1
add r11, r9, r11
ldrh r12, [r11]
sub r0, r0, 600
add r0, r0, r12
strh r0, [r11]
add r7, 1
add r10, 1
b delay
soundDelayed:
mov r8, 0
mov r6, 30000
mov r10, 22000
b delay1
delay1:
mov r1, 4
cmp r10, r6
beq soundDelayed1
ldr r9, =array
lsl r8, r7, 1
add r8, r9, r8
ldrh r0, [r8]
lsl r11, r10, 1
add r11, r9, r11
ldrh r12, [r11]
sub r0, r0, 1200
add r0, r0, r12
strh r0, [r11]
add r7, 1
add r10, 1
b delay1
soundDelayed1:
mov r7, 0
mov r6, 30000
b loadSound
我不知道我是否做过根本上错误的事情。任何帮助将不胜感激。