Я многому научился здесь, но я наконец застрял и не могу найти ответ.Я пытаюсь написать простую программу для класса, которая принимает пользовательский ввод, помещает эти числа в массив, передает эти числа и длину массива в функцию сборки, затем инвертирует числа и передает их обратно в функцию c для вывода.У меня проблемы с определением адреса массива в стеке или получением адреса последнего элемента в регистре edi.Вот код, который у меня есть, извините за плохое качество кодирования.Я новичок.
Это в сборке визуальной студии, потому что блоки кода и затмение продолжают падать при загрузке, и я должен закончить этот проект.Visual studio использует формат AT & T.
// String_reverse.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
unsigned int input [8];
int length;
int string_reverse( int length, unsigned int input [])
{
_asm push ebp;
_asm mov esp, ebp;
_asm lea edi, [esi+ecx*4-4];
_asm cmp esi, edi;
_asm jnb L_done;
_asm L_repeat:
_asm mov eax, [esi];
_asm mov ebx, [edi];
_asm mov [edi], eax;
_asm mov [esi], ebx;
_asm add esi, 4;
_asm sub edi, 4;
_asm cmp esi, edi;
_asm jb L_repeat;
_asm L_done:
_asm mov esp, ebp;
_asm pop ebp;
_asm ret;
}
int main()
{
printf("Enter the number series you would like reversed... input -1 to
exit\n");
scanf_s ("%u", input);
string_reverse(sizeof(input)/sizeof(*input), input);
printf("Your reversed number series:\n%u", input);
getchar();
getchar();
return 0;
}