Когда я запускаю этот код, я понимаю, что 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