Ввожу массив через С++, вызываю ассемблеровскую функцию, которая каждый элемент массива делит на два, а потом вывожу через С++:
main.cpp
#include <iostream>
extern "C" void ms(int *, int);
int main()
{
	int n = 3;
	int b[n];
	std::cout << "Введите массив: " << std::endl;
	for (int i = 0; i < n; i++)
	{
		std::cout << "array[" << i << "]: ";
		std::cin >> b[i];
	}
	ms(b, n);
	std::cout << "Результат: " << std::endl;
	for (int i = 0; i < n; i++)
	{
		std::cout << "array[" << i << "]: " << b[i] << std::endl;
	}
	return 0;
}
main.asm
section .text
global ms
ms:
	mov rbx, 0
	mov rcx, rsi
	cycl:
	mov rax, [rdi+rbx*4]
	push rbx
		mov rbx, 2
		xor rdx, rdx
		;add rax, rbx
		div rbx
	pop rbx
	mov [rdi+rbx*4], rax
	inc rbx
	loop cycl
Makefile
TARGET=main
.PHONY: all cln
all: $(TARGET)
$(TARGET): main.cpp main-asm.o
	g++ main.cpp main-asm.o -o $@
main-asm.o: main.asm
	nasm -f elf64 main.asm -o $@
cln:
	rm -rf $(TARGET) main-asm.o



