В настоящее время я прохожу курс сборки, и у меня есть домашний вопрос, который я хочу убедиться, что он правильный. Мой вопрос гласит:
Дайте массив с именем array1 со значениями 1000h, 2000h, 3000h, 4000h, 5000h и другой массив с именем array2 со значениями 11111h, 22222h, 33333h, 44444h, 55555h. Используйте al oop, чтобы поменять n-е элементы позиции из array1 и array2.
Я написал этот код:
; AddTwo.asm - adds two 32-bit integers.
; Chapter 3 example
.386
.model flat,stdcall
.stack 4096
INCLUDE Irvine32.inc ; including the library onto the program
ExitProcess proto,dwExitCode:dword
.data
array1 WORD 1000h, 2000h, 3000h, 4000h, 5000h
array2 DWORD 11111h, 22222h, 33333h, 44444h, 55555h
.code
main proc
mov ecx, 5
mov esi, offset Array1 ; esi points to beginning of Array1
mov edi, offset Array2
L1:
xchg edi, esi ; swaps values of array1 (esi) and array2 (edi)
add esi, 4 ; increments the address to next element
add edi, 4
loop L1 ; will loop through label 1 amount of times ecx is
call DumpRegs ; main utility call to display all registers and status flags
invoke ExitProcess,0
main endp
end main
Мой код компилируется, но я не уверен на 100% если это правильно. Любая помощь будет принята с благодарностью.