Извините за мой плохой английский. Я новичок в программировании на ассемблере. я получаю некоторые проблемы с некоторыми ассемблерными кодами в Visual Studio.
mov rbx,rcx
mov rsi,rdx
xor rcx,rcx
xor rdi,rdi
m:
mov rax,[rbx+rcx]
mov rdi,[rsi+0]
mul rdi
mov [r8+0],rax
mov rax,[rbx+rcx]
mov rdi,[rsi+4]
mul rdi
mov [r8+4],rax
mov rax,[rbx+rcx]
mov rdi,[rsi+8]
mul rdi
mov [r8+8],rax
mov rax,[rbx+rcx]
mov rdi,[rsi+12]
mul rdi
mov [r8+12],rax
cmp rcx,12
jle cruz
cruz:
mov rax,[r8+0]
mov [r9+rcx],rax
mov rax,[r8+4]
mov [r9+16+rcx],rax
mov rax,[r8+8]
mov [r9+32+rcx],rax
mov rax,[r8+12]
mov [r9+48+rcx],rax
add rcx,4
cmp rcx,12
jle m
- RCX имеет этот массив
[1, 2, 3, 4]
- RDX имеет
[1, 2, 3, 4]
- r8 имеет
[0, 0, 0, 0]
- r9 имеет
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
этот код должен дать это:
array in r9 --> [1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16]
Но вместо этого он дает мне это:
array in r9 --> [1, 2, 3, 4, 8, 4, 6, 8, 12, 6, 9, 12, 16, 8, 12, 16]
Что-то происходит, когда я перемещаю первые элементы из массива, и я не знаю, что это, пожалуйста, помогите мне.
Я не знаю, правильно ли я все делаю,Мне действительно нужна помощь, чтобы понять, что я делаю неправильно.