Нужно вывести двумерный массив, содержащийся в структуре, на экран. Обращаюсь в память по соображениям, что array[i][j] = (адресс первого элемента + N*M*i + N*j), где N - размер элемента в байтах, M - количество строк в дв. массиве, i и j - счётчики в циклах(использую rcx и rdx, соответственно). Кажется, регистр выбрал верный, но всё равно ошибка
main.asm [26]:
mov ax, [field.grid + 8*(field.size_n*rcx + rdx)]
processed: mov ax,[field.grid+8*(field.size_n*rcx+rdx)]
error: operand sizes do not match.
при компиляции. Архитектура х64, препроцессор FASM
Код:
format ELF64
public _start
struc playing_field n {
.size_n db n
.grid rw n*n
.max_score db 0
}
field playing_field 4
_start:
call exit
section ".print_grid" executable
; | input:
; rax = array
print_grid:
xor rcx, rcx
.first_iter:
xor rdx, rdx
.second_iter:
mov ax, [field.grid + 8*(field.size_n*rcx + rdx)]
inc rdx
cmp rdx, field.size_n
je .next
jmp .second_iter
.next:
inc rcx
cmp rcx, field.size_n
je .quit
jmp .first_iter
.quit:
ret