Поменять местами четные и нечетные элементы массива - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! помогите разобраться, нужно поменять местами четные и нечетные элементы массива, результат записать в тот же массив, последний элемент массива 0, когда он встречается в цикле - выходим, вот наброски:
jmp @start
@ data_:
@mas: dw 1, 2, 3, 4, 5, 6, 0
@start:
lea     eax, [esp - 4]
push    eax
push    $00000040
push    offset @start
sub     dword ptr [esp], offset @data_
push    offset @data_
call    VirtualProtect
 
xor eax, eax
xor edx, edx
lea esi, @mas
mov ecx, 7
@sm_loop:
mov eax, esi
mov edx, 2
add edx, eax
xchg edx, eax
mov [esi], edx
mov [edx], eax
loop @sm_loop

Решение задачи: «Поменять местами четные и нечетные элементы массива»

textual
Листинг программы
jmp @start
@ data_:
@mas: dw 1, 2, 3, 4, 5, 6, 0
@start: lea esi, @mas
@1: lodsw
    test ax,ax
    jz exit;последний элемент массива 0, когда он встречается в цикле - выходим
    xchg ax,[esi]
    mov [esi-2],ax
    add esi,2
    jmp @1
exit: ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы