Я не могу вспомнить точные директивы, которые использует masm32, но базовая структура должна выглядеть примерно так:
mov edi, addr tiles ; might be called offset, some assemblers (notably gas) would use something like lea edi, [tiles] instead
mov ecx, 12 ; the count, this could be gotten from an equ, read from a variable etc.
for_loop:
add byte ptr [edi], 2 ; tiles[i] += 2
inc edi ; move to next tile
dec ecx ; count--
jnz for_loop ; if (count != 0) goto for_loop
Или, если вы хотите, чтобы он был структурирован больше как код c #:
mov edi, addr tiles
sub ecx, ecx ; ecx = 0
for_loop:
cmp ecx, 12 ; ecx < tiles.Length ?
jnl done ; jump not less
add byte ptr [edi+ecx], 2 ; tiles[i] += 2
inc ecx ; i++
jmp for_loop
done:
Обратите внимание, что если вы измените тип tiles
, часть кода придется изменить (в частности, включающую edi
).