Следующие строки проблематичны:
cmp mArray[row*9 + column], mArray[row*9 + column+1]
xchg mArray[row*9 + column+1], mArray[row*9 + column]
В отличие от HLL, сборка НЕ допускает произвольных выражений вместо констант или переменных.Вот почему HLL были изобретены в первую очередь.Рассчитайте смещение в регистрах перед использованием:
mov ax, row
mov bx, ax
shr bx, 3 ; bx = row*8 now
add bx, ax ; bx = row*9 now
add bx, column ; bx = row*8+column now
mov dx, [bx] ;first comparand
inc bx
cmd dx, [bx] ; that's your compare!
Кроме того, вы не используете ветвления;инструкция cmp
абсолютно бессмысленна;вы теряете его результат, а xcng не выполняется условно.Читайте о командах условного перехода (jz / jnz и т.Если это по-настоящему, пожалуйста, пересмотрите использование сборки.Для чего-то столь же тривиального, как это, сборка - неправильный, неправильный выбор.Espec.учитывая, насколько ты в этом плох.