Я пытаюсь реализовать задержку звука в 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
Я не могу понять, сделал ли я что-то в корне неправильно. Любая помощь будет оценена.