2014-10-02 4 views
0

У меня возникают ошибки при создании моей программы или ее запуске. Я хочу закодировать массив и перенести первый элемент в конец и в основном переместить каждый элемент на один в индексе. Я знаю, что мне нужно индексировать, но это путающая часть синтаксиса для меня.Поворот массива с сборкой

Пожалуйста, помогите!

INCLUDE Irvine32.inc 

.386 
.model flat,stdcall 
.stack 4096 
ExitProcess proto,dwExitCode:dword 

.data 
array dword 10h,20h,30h,40h 
arraySize dword lengthof array 

.code 
main proc 

    mov ecx, 0 

    loop_start: 
    cmp ecx, 7 
    jge loop_end 

    mov eax, array[ecx*4] 
    ; Use Irvine's WriteHex to display value in register eax 
    call WriteHex 
    call Crlf 
    add ecx, 1 
    jmp loop_start 
    loop_end: 

    INVOKE ExitProcess, 0 
main endp 
end main 

Любая помощь приветствуется!

+0

Ваше описание того, чего вы хотите достичь, неясно. Как вы хотите переставить массив? {0,1,2,3} -> {1,2,3,0} (В основном вращение массива)? – EOF

+0

Да! точно! Как я могу это сделать? моя логика/синтаксис с регистрами уходит –

ответ

0

Я рекомендую начать, написав предназначенный алгоритм на языке высокого уровня:

void rotateArray(uint32_t *arr, size_t num) 
{ 
    uint32_t temp = arr[0]; 
    for (size_t i = 0; i<num-1; i++) //loop is essentially a memmove() 
    { 
     arr[i] = arr[i+1]; 
    } 
    arr[num-1] = temp; 
    return; 
} 

Это должно быть просто скомпилировать, даже для meatbag человека.

Смежные вопросы