Сборка Visual Studio - я не понимаю, почему мой ассемблерный код дает мне эти значения - PullRequest
0 голосов
/ 24 октября 2019

Извините за мой плохой английский. Я новичок в программировании на ассемблере. я получаю некоторые проблемы с некоторыми ассемблерными кодами в 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]

Что-то происходит, когда я перемещаю первые элементы из массива, и я не знаю, что это, пожалуйста, помогите мне.

Я не знаю, правильно ли я все делаю,Мне действительно нужна помощь, чтобы понять, что я делаю неправильно.

...