Массив, который копирует свое содержимое в другой массив в обратном направлении, не работает должным образом - PullRequest
0 голосов
/ 08 февраля 2020

Когда я запускаю этот код, я понимаю, что arrayA будет скопирован в arrayB в обратном направлении. Поэтому, когда я пытаюсь посмотреть, что находится в arrayB[1], должно быть 6, но оно выходит на 0.

Я знаю, что этот код неэффективен. Это всего лишь упражнение по использованию операторов offset, sizeof и lengthof, чтобы избежать прямого доступа к памяти и любого использования констант. Я студент, поэтому самое простое - лучшее.

.386
.model flat,stdcall ; memory system

.stack 4096 ; declare stack memory size 4kb
  ExitProcess proto,dwExitCode:dword

.data

  arrayA word 01d, 05d, 06d, 02d
  arrayB word 00d, 00d, 00d, 00d

.code
  main proc
    mov eax, 0
    mov esi, offset arrayA
    mov ecx, sizeof arrayA
    mov ebx, lengthof arrayB
    sub ebx, 1

    L1:
        mov ax, [esi]
        add esi, type arrayA
        mov arrayB[ebx], ax
        sub ebx, 1
        sub ecx, type arrayA
        cmp ecx, 0
        jne L1

    mov ax, arrayB[1]

    invoke ExitProcess,0
  main endp
end main
...