Передача массива из c в сборку и обратный массив - PullRequest
0 голосов
/ 04 декабря 2018

Я многому научился здесь, но я наконец застрял и не могу найти ответ.Я пытаюсь написать простую программу для класса, которая принимает пользовательский ввод, помещает эти числа в массив, передает эти числа и длину массива в функцию сборки, затем инвертирует числа и передает их обратно в функцию 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...