global PrintValue
section .note.GNU-stack
section .data
A dq 5,2,5,-3,7,5,1,4
N equ 8
X dq 5
section .text
PrintValue:
xor rax,rax ; rax = S, общая сумма
xor rcx,rcx ; rcx = индекс элемента
lea rsi,[rel A] ; rsi = адрес начала массива
mov r8,[rel X] ; r8 = заданное число X
next:
cmp rcx,N
jge finish ; если просмотрели N элементов
mov r9,[rsi+8*rcx] ; r9 = A[rcx]
cmp r9,r8 ; сравниваем элемент с X
jne skip ; если не равен, пропускаем
add rax,r9 ; S += элемент, равный X
skip:
inc rcx ; следующий элемент
jmp next
finish:
ret ; rax = 15